|
|||||||
Задание пароля SQL-пользователя root для MariaDB (MySQL) в Debian 9
Время создания: 13.12.2017 17:15
Автор: xintrea
Текстовые метки: linux, mysql, mariadb, root, пользователь, пароль
Раздел: Компьютер - Программирование - SQL - MySQL, MariaDB
Запись: xintrea/mytetra_syncro/master/base/1513173735msmq7znqxk/text.html на raw.github.com
|
|||||||
|
|||||||
Вместо вступления В Debian 9 пакет с MySQL сервером называется mariadb-server. Из него, по сути, устанавливается MySql сервер, который с некоторых пор зовется MariaDB. Имена бинарников, конфигурационных каталогов и файлов не поменялись - всё осталось как у MySql. Например, сам бинарник MySql-консоли как назывался mysql, так и называется. Каталог настройки тоже не претерпел изменений: /etc/mysql Неужели ничего больше не изменилось? Конечно, изменилось. Например, раньше, при установке MySql сервера, запрашивался пароль для SQL-пользователя root. Теперь этого не происходит. И даже запуск команды: dpkg-reconfigure mariadb-server теперь не приводит к запросу логина-пароля SQL-суперпользователя. Почему так произошло? Как задать пароль SQL-суперпользователя? Разработчики MariaDB решили, что теперь авторизация с сервером должна происходить не по паролю, а по токену. Поэтому в свежеустановленной MariaDB у пользователя root нет пароля. Примечание. Далее, чтобы упростить повествование, название MariaDB писаться не будет. В конце концов, это всего лишь название пакета и информационная строка в опции --version. Все будет написано так, как будто речь идет о MySql. Вход в консоль управления Чтобы зайти в консоль управления, необходимо из-под UNIX-пользователя root дать команду: mysql -u root -p На вопрос "Enter password:" надо просто нажать Enter. Если вы дадите эту команду от обычного UNIX-пользователя, то получите ошибку: ERROR 1698 (28000): Access denied for user 'root'@'localhost' В общем, c помощью этой команды происходит вход в консоль управления MySql под SQL-пользователем root. Задание пароля для пользователя root Для задания пароля SQL-пользователя root, следует активировать базу mysql: use mysql; В таблице user имеется всего одна запись (для SQL-пользователя root), и выглядит она так: MariaDB [mysql]> select Host, User, Password, plugin from user; +-----------+------+----------+-------------+ | Host | User | Password | plugin | +-----------+------+----------+-------------+ | localhost | root | | unix_socket | +-----------+------+----------+-------------+ 1 row in set (0.00 sec) Видно, что у пользователя root отсутсвует пароль, а в плагинах прописан метод подключения через сокет. Задать пароль для root можно следующими командами: UPDATE user SET Password = PASSWORD('тут_пароль') WHERE User = 'root'; Затем можно отключить плагин unix_socket, чтобы подключение к БД было возможно не только локально: UPDATE user SET plugin = '' WHERE User = 'root'; Вроде как данную настройку править не обязательно, потому что она дополняет режимы подключения, а не заменяет, но тут мнение экспертов в рунете расходятся. После чего надо обновить привелегии пользователей: FLUSH PRIVILEGES; После этих действий таблица пользователей должна выглядеть примерно так: MariaDB [mysql]> select Host, User, Password, plugin from user; +-----------+------+-------------------------------------------+--------+ | Host | User | Password | plugin | +-----------+------+-------------------------------------------+--------+ | localhost | root | *2045AB820D86268976EFFA8F604CEF72848B4C1B | | +-----------+------+-------------------------------------------+--------+ 1 row in set (0.00 sec) Далее надо проверить, как работает вход в консоль MySql с новым паролем. Выход из консоли: MariaDB [mysql]> quit Bye Повторный вход: # mysql -u root -p Enter password: Вводим пароль (при вводе он не будет отображаться) Welcome to the MariaDB monitor. Все в порядке. Теперь, после такой настройки, вход в консоль управления MySql под SQL-пользователем root будет возможен из bash-сессии любого UNIX-пользователя. Надо будет просто ввести пароль. Команда для входа всё та же: $ mysql -u root -p Кроме того, после такой настройки начнут устанавливаться соединения с сервером баз данных, инициированные клиентами, которые умеют коннектится "как обычно" - только по логину-паролю. В принципе, именно для этого здесь показана именно такая настройка MySql. Вместо послесловия А нужно ли делать все эти настройки? Задавать пароль root? В принципе, нет. Вместо этого можно создать еще одного SQL-пользователя, у которого будет доступ к изменению только одной базы данных. И эта настройка наиболее правильна. Но мы же дилетанты, а не опытные БД админы, которым достаточно одной консоли. А для того, чтобы подключиться к mysql-серверу в качестве администратора с какого-нибудь внешнего GUI менеджера, придется задать пароль администратора. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|