@vebmaster

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

Здравствуйте.
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 пользователя вообще, даже с паролем.

Подскажите пожалуйста, как исправить?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
@KingstonKMS
full-stack web developer
У вас авторизация по умолчанию через сокет.
Для смены используйте код:
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Абсолют Банк Москва
от 150 000 до 170 000 ₽
MSP360 Санкт-Петербург
от 80 000 до 130 000 ₽
ProfitClicks Краснодар
от 80 000 ₽