LINUX.ORG.RU
ФорумAdmin

Mysql в консоле пускает через root с любым паролем. Как исправить?

 


0

1

Здравствуйте.
mysql 5.7.29
На root установлен пароль.
Привелегии:

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SHOW GRANTS FOR 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

Из консоли linux пускает с любым паролем, даже с пустым

mysql --host=localhost --user=root --password=qwe1
mysql --host=localhost --user=root -p

На запрос «show databases;» показывает все базы данных.

Но выполнение вот такого скрипта

<?php

$link = mysqli_connect("localhost", "root", "");

if (!$link) {
    echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
    echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

$query = mysqli_query($link, "show databases;");

if(mysqli_num_rows($query) > 0)
{
  $data = mysqli_fetch_assoc($query);
  print_r($data);
}
else {
  echo "empty";
}

выдаёт только базу information_schema, тоже с любыми паролями.

php sql.php
Array
(
    [Database] => information_schema
)

Из браузера через phpMyAdmin и adminer не авторизует root пользователя вообще, даже с паролем.

Подскажите пожалуйста, как исправить?

Ответ на: удаленный комментарий

сервер запущен без параметра «skip-grant-tables», в папке /etc/mysql/ нету ни одного файла с фразой «skip-grant-tables».

А какие нужны данные для диагностики?

vebmaster
() автор топика
Ответ на: комментарий от vebmaster

ну, допустим, нужна ос, способ установки, параметры запуска, конфиг инстанса, логи запуска, твоя фамилия и место работы.

Anoxemian ★★★★★
()
Ответ на: комментарий от vebmaster

Пароли-то заданы? Что там в mysql.users? Хотя, вроде, если не заданы, как раз с паролем не должно пускать. Но могу ошибаться.

AS ★★★★★
()
Ответ на: комментарий от garik_keghen

Ubuntu 18.04.3 LTS Устанавливал через консоль: apt install mysql-server

Файл /etc/init.d/mysql не изменялся - https://pastebin.com/3dAWc4Vy
Лог перезапуска «service mysql restart» /var/log/mysql/error.log - https://pastebin.com/YrNPtYmJ

mysql> SELECT user, host, plugin FROM mysql.user;
+---------------+-----------+-----------------------+
| user          | host      | plugin                |
+---------------+-----------+-----------------------+
| root          | localhost | mysql_native_password |
| mysql.session | localhost | mysql_native_password |
| mysql.sys     | localhost | mysql_native_password |
| replicator    | %         | mysql_native_password |
| root          | %         | mysql_native_password |
+---------------+-----------+-----------------------+
5 rows in set (0.00 sec)
# apt list libmysqlclient*
Listing... Done
libmysqlclient-dev/bionic-updates,bionic-security 5.7.29-0ubuntu0.18.04.1 amd64
libmysqlclient20/bionic-updates,bionic-security,now 5.7.29-0ubuntu0.18.04.1 amd64 [installed,automatic]
vebmaster
() автор топика
Ответ на: комментарий от zgen

так я ставил руту пароль, когда устанавливал mysql, зачем ему второй раз ставить пароль.
Да, я могу запустить в безопасном режиме его и сбросить пароль, но вопрос, откуда взялась такая проблема, т.к. это если это бага, то тогда потребуется писать в багтрекер mysql.

vebmaster
() автор топика

@vebmaster

анонимус рекомендует проверить:

Извините за оффтоп. Вы там с мускулом ковыряетесь, а автор треда отключил комментирование для анонов. Передайте ему, что причина в auth_socket.
anonymous (28.02.20 12:54:29)
garik_keghen ★★★★★
()
Ответ на: комментарий от garik_keghen

да, вы правы, спасибо

mysql> select user, host, plugin, authentication_string from mysql.user where user = 'root';
+------+-----------+-----------------------+-------------------------------------------+
| user | host      | plugin                | authentication_string                     |
+------+-----------+-----------------------+-------------------------------------------+
| root | localhost | auth_socket           |                                           |
| root | %         | mysql_native_password | ***************************************** |
+------+-----------+-----------------------+-------------------------------------------+
2 rows in set (0.00 sec)

предыдущий «SELECT user, host, plugin FROM mysql.user;» с другого сервера, просмотрел, запутался.

vebmaster
() автор топика
Последнее исправление: vebmaster (всего исправлений: 1)
Ответ на: комментарий от zgen

т.е. если я забыл установить пароль через mysql_secure_installation, то по умолчанию будет использоваться auth_socket, правильно?
Такое тоже возможно.

vebmaster
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.