• Полезные команды MySQL

 #10168   IgorA100
 28 май 2017, 20:33
Проверить конфиг на ошибки:
Код: Выделить всё/usr/sbin/mysqld --help --verbose --skip-networking 1>/dev/null

Узнать какие типы таблиц поддерживаются в MySQL: show engines;
Просмотр свойств таблицы: show create table t;, где "t" - имя таблицы
Выбрать базу данных: USE example_db;
Войти под root: mysql -u root -p

Восстановление таблиц:
https://www.a2hosting.com/kb/developer- ... nd-tables/
https://www.iditect.com/program-example ... ngine.html

Восстановить пароль root
# service mysqld stop
# mysqld_safe --skip-grant-tables &
# mysql
mysql> UPDATE mysql.user SET Password=PASSWORD('новый_пароль') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> \q
# service mysqld start

Резервное копирование БД
# mysqldump --opt -p имя_базы > имя_базы.sql
# mysqldump -uroot -p roundcube > /tmp/roundcube.sql

Восстановление БД из резервной копии
# mysql -p
mysql> CREATE DATABASE имя_базы;
mysql> \q
# mysql -p имя_базы < имя_базы.sql
ИЛИ:
mysql> use database;
mysql> source database.sql
ИЛИ:
mysql -uroot -h11.11.11.11 -p database < database.sql

Починка таблиц в БД
# myisamchk -r /var/lib/mysql/имя_базы/имя_таблицы.MYI

если не помогло
# myisamchk -o /var/lib/mysql/имя_базы/имя_таблицы.MYI

Подключение
mysql -p подключиться с указанием пароль, ключ -u позволяет указать пользователя для подключения.

Статус
mysql> \s

Выход
mysql> \q

Посмотреть какие базы есть
mysql> SHOW DATABASES;

Подключиться к базе, т.е. сделать в сессии какую либо БД текущей
mysql> USE имя_базы;

Создать БД
mysql> CREATE DATABASE имя_базы;

Создать таблицу
mysql> CREATE TABLE имя_таблицы;
или
mysql> CREATE TABLE имя_таблицы (`id` int(11) NOT NULL auto_increment, `имя_столбца` int(11) NOT NULL default '0', PRIMARY KEY (`id`));

Удалить базу
mysql> DROP DATABASE имя_базы;

Посмотреть список пользователей
mysql> SELECT user FROM mysql.user;

Посмотреть список таблиц
mysql> SHOW TABLES;

Посмотреть статус конкретной таблицы:
mysql> SHOW TABLE STATUS like 'имя_таблицы';
или всех таблиц:
mysql> SHOW TABLE STATUS;

Переименовать таблицу
mysql> RENAME TABLE старое_название TO новое_название;

Удалить таблицу
mysql> DROP TABLE имя_таблицы;

Очистить таблицу (удалить данные)
mysql> TRUNCATE TABLE имя_таблицы;

Список столбцов в таблице:
mysql> SHOW COLUMNS FROM tableName;

Посмотреть данные в таблице :
mysql> SELECT * FROM tableName;

Создать пользователя для баз MariaDB
mysql> GRANT SELECT,INSERT,DELETE,UPDATE ON имябд.* TO 'admin'@'localhost' IDENTIFIED BY 'пароль_для_admin';

Незабываем!!! обновить привилегии:
mysql> FLUSH PRIVILEGES;

Посмотреть какие есть права у пользователя.
mysql> SHOW GRANTS FOR 'имя_пользователя'@'localhost';

Показать привилегии пользователя баз MariaDB.
mysql> SHOW GRANTS FOR 'имя_пользователя'@'localhost';

Назначить ВСЕ привилегии пользователю баз MariaDB.
GRANT ALL ON *.* TO 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль';

Изменить данные в таблице, например хеш пароля пользователя прописанного в БД. Предварительно выбрав! саму базу
mysql> UPDATE users SET user_hash = MD5('пароль') WHERE user_name = 'name';

Подсказка
mysql> HELP

Посмотреть процессы в текущей базе
mysql> SHOW PROCESSLIST;

Посмотреть кодировку и статистику таблицы
mysql> SHOW TABLE STATUS WHERE Name = 'Monitors';

Посмотреть записи в таблице
mysql> SELECT * FROM Server_Stats ORDER BY TimeStamp DESC LIMIT 10;

результат выполнения запроса вывести в файл
1. Смотрим в какой место можно сохранить:
Код: Выделить всёmysql> SHOW VARIABLES LIKE "secure_file_priv";

Результат будет примерно такой:
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0,00 sec)

2. Выполняем запрос с выводом в файл:
mysql> SELECT * FROM Monitors INTO OUTFILE '/var/lib/mysql-files/customers.txt';

Преимущества MariaDB:
1. Встроен профайлер. Достаточно выполнить команду: SHOW ENGINE INNODB STATUS;

ОПТИМИЗАЦИЯ MySQL
https://habr.com/ru/post/539792/
 #10705   IgorA100
 05 апр 2023, 17:26
Определить размер таблиц:
https://userman.ru/2018/10/13/kak-opred ... mysql.html
https://www.a2hosting.com/kb/developer- ... nd-tables/

Удаление строк приводит к увеличению хранилища базы данных в MySQL: https://stackoverflow.com/questions/488 ... w-in-mysql
 #10747   IgorA100
 29 июн 2024, 00:09
Выборка каждой второй и третьей записи из базы данных
Код: Выделить всёset @counter:=0;
select * from
( select @counter:=@counter+1 as cnt, t.*
  from test_db as t
  order by inserted desc) as isel
where cnt % 2 = 0;


https://stackoverflow.com/questions/326 ... m-database