Я только что установил MariaDB (mysqld) на свежий Ubuntu, загруженный вчера. Затем я запустил сценарий
/usr/bin/mysql_secure_installation
и установите новый пароль root и отключите вход без пароля. Однако это не сработало, поэтому я попытался сформировать командную строку:
root@www:~# mysqladmin password whatever
root@www:~# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 35
Server version: 10.0.24-MariaDB-7 Ubuntu 16.04
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> \q
Bye
root@www:~#
root@www:~# mysql -uroot -plkasjfdklajsfd
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 38
Server version: 10.0.24-MariaDB-7 Ubuntu 16.04
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> select Host , User, Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *90837F291B744BBE86DF95A37D2B2524185DBBF5 |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
Почему mysql игнорирует мои инструкции по смене пароля и, что еще хуже, разрешает вход без пароля как root?
Некоторые дистрибутивы на основе Debian начали использовать плагин аутентификации сокета UNIX для пользователя root. Это означает, что учетная запись операционной системы связана с корневой учетной записью базы данных, и вы можете получить доступ к базе данных только при наличии прав суперпользователя. Насколько мне известно, это сделано для большей безопасности первоначальной установки.
Чтобы убедиться, что это действительно плагин аутентификации сокета UNIX, который вызывает это, вы можете войти в систему как другой пользователь и попытаться подключиться к базе данных с помощью mysql -uroot
. Если это не удается, вы только что подтвердили, что база данных использует подключаемый модуль проверки подлинности сокета UNIX.
По умолчанию mysql
клиент будет использовать локальный сокет домена UNIX для подключения к серверу. Чтобы использовать сетевое соединение, укажите адрес обратной связи в качестве имени хоста с -h 127.0.0.1
. Это должно позволить вам подключиться как пользователь root с явным паролем.