Как установить mysql в Debian Linux

MySQL - популярная система управления базами данных для Web и серверных приложений. Опишу, как установить и настроить MySQL в Debian 9.

Подготовка системы

Для начала обновим систему:

$ sudo apt-get update
$ sudo apt-get upgrade

Установка

Для того чтобы установить MySQL нужно установить сервер, и клиент для доступа к базам данных:

$ sudo apt-get install mysql-server 
$ sudo apt-get isntall mysql-client

Проведем первоначальную настройку

Укажем пароль root:

$ sudo /usr/bin/mysql_secure_installation

MySQL по умолчанию настраивается для локальных пользователе localhost (127.0.0.1).

MySQL будет загружаться автоматически с загрузкой системы. Но так же можно запустить сервер вручную (от пользователя root):

$ sudo service mysql start

или

$ sudo /etc/init.d/mysql start
$ sudo /etc/init.d/mysql restart
$ sudo /etc/init.d/mysql stop

Стандартным средством для взаимодействия с MySQL является mysql-client, который мы установили выше. Он используется через терминал.

Root login

Для того, чтобы зайти в MySQL как root используется следующая команда:

$ sudo mysql -u root -p

параметр -u - user

параметр -p - password, запрос пароля

После успешной авторизации вы увидите приветственный заголовок MySQL и следующее консольное приглашение:

mysql>

Чтобы увидеть вспомогательный спискок команд введите \h:

mysql> \h
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear command.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'

mysql>

Если возникают проблемы с авторизацией в MySQL

Возникает что-то вроде данной ошибки:

"ERROR 1698 (28000): Access denied for user 'root'@'localhost'" error

Тут скорее всего дело в том, что при установке в Debian MySQL по умолчанию использует UNIX auth_socket plugin (unix_socket). Это означает, что db_users, которая использует этот метод авторизации, использует данные системных пользователей. Из-за этого возникает конфликт. Вы можете увидеть какой метод авторизации выбран в вашем случае следующей командой:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

В запросе видно, что root использует auth_socket.

Чтобы это исправить нужно авторизироваться в MySQL с помощью sudo и поменять метод авторизации на авторизацию паролем и перезагрузить сервер mysql:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ sudo service mysql restart

После этого вы сможете нормально подключаться к mysql от пользователя командой:

mysql -u root -p