Подключение к БД
Команды можно использовать как для mySQL, так и для MariDB.
mysql -h 127.0.0.1 -u root -p
- h – хост базы данных, если коннектимся к локальной базе (по ip 127.0.0.1), этот параметр можно опустить
- u – имя пользователя
- p – пароль, его нужно будет ввести после нажатия enter
На своем хосте, или если уже подключились:
mysql -u{root} -p{pass}
Где {root} – логин, {pass} -пароль. Если пароль содержит спец. символы, нужно ввести его отдельной строкой. Для этого после -p ничего не вводите или оставьте пробел.
Если все ок, то вы увидите приветствие:
[root@serv.ru]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 363
Server version: 10.10.2-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C.
Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой “;”. При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить “;” и нажать “enter”.
Работа с БД
Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:
show databases;
Результатом будет что то вроде этого:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | wordpress | | linky | | mysql | | performance_schema | | phpmyadmin | | test | +--------------------+ 7 rows in set (0.00 sec)
Выбрать базу данных wordpress:
mysql> use wordpress Database changed
Посмотреть все таблицы в БД:
mysql> show tables;
Просмотреть структуру таблицы (имена и тип полей):
mysql> describe post_estimations; +------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+-------+ | post_id | int(10) unsigned | YES | MUL | NULL | | | user_id | int(10) unsigned | YES | MUL | NULL | | | estimation | float(2,1) unsigned | NO | | NULL | | | date | int(10) unsigned | NO | | NULL | | +------------+---------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
Достать информацию о юзере с id=22:
mysql> SELECT * FROM users WHERE id=22;
Бэкап структуры таблицы, а точнее sql-запрос на её создание
show create table table_name;
Если в конце запроса поставить не ; а \G, то результат будет показан другим образом – иногда весьма удобно, если таблица имеет много полей:
select * from update__v4_errors where id = 1102003\G
Посмотреть, какие запросы выполняются в данный момент на сервере MySQL:
show processlist;
Учтите, что будут отображены еще не выполненные (активные) запросы, поэтому show processlist;
актуальная команды только для нагруженных БД, в других случаях маловероятно, что команда что то покажет.
Что делать если вижу знаки вопросов вместо текста в MySQL?
Это проблема с кодировкой. Вероятно в my.ini файле mysql-сервера не добавлено:
1
2
|
[mysqld] init- connect = 'SET NAMES utf8' |
Нужно добавить в .ini файл либо выполнить в консоли команду “SET NAMES utf8”, после чего во время текущей сессии отображаться русский текст в mysql-консоли будет без проблем:
1
2
|
mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) |
Как сделать бэкап базы mysql через консоль ssh?
Сделать бэкап базы database в файл dump_name.sql
mysqldump -u [username] -p [password] [database] > [dump_name.sql]
[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_name.sql] – имя файла, дампа на выходе.
Развернуть базу из файла через командную строку
mysql -u [username] -p [password] [database] < [dump_to_restore.sql]
[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_to_restore.sql] – имя файла, из которого поднимаем базу
Сделать дамп структуры одной таблицы mysql (без данных):
mysqldump -u[user] -p[password] -h[host] [database] [table_name] --no-data > /path/dump_name.sql
Например, задампим таблицу users из базы данных mydatabase:
mysqldump -uroot mydatabase users > users.dump.sql
Развернуть mysql-dump в БД с именем database_name:
mysql -uroot database_name < users.dump.sql
Ещё одна интересная штука. Выполнять из консоли, не требуется предварительно подключаться к mysql (mysql>). Вывести список таблиц базы данных, не подключаясь непосредственно к mysql:
mysql -uroot -e 'show tables' database_name && echo done
mysql> show variables like '%incr%';
Оболочки GUI
В качестве оболочек с интерфейсом можно использовать phpmyadmin или adminer. PhpMyAdmin более удобная оболочка, но может иметь проблемы с уязвимостью и совместимостью с последними версиями PHP. Adminer максимально прост и этим хорош.