Предоставить привилегии на MariaDB

Я пытаюсь предоставить привилегии пользователю на MariaDB 10, но у меня ошибка 1045

[root@lw343 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.0.11-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [mysql]> select user,host from mysql.user;                              
+--------+-----------+
| user   | host      |
+--------+-----------+
| ruser  | %         |
| root   | 127.0.0.1 |
| bill   | localhost |
| nagios | localhost |
| root   | localhost |
+--------+-----------+
5 rows in set (0.00 sec)

MariaDB [mysql]> select user(),current_user();
+----------------+----------------+
| user()         | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

MariaDB [mysql]> show variables like 'skip_networking';                         
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| skip_networking | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO root@"localhost" IDENTIFIED BY '**********' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
MariaDB [mysql]>

Я перепробовал все, что нашел в интернете, но у меня такая же ошибка. Я также пытался создать нового пользователя, но у меня все еще возникала одна и та же ошибка для каждого пользователя, которому я пытаюсь предоставить.

Кто-нибудь может помочь мне решить эту проблему?

Заранее спасибо.

1 ответ

Прежде всего, я бы проверил, слушает ли сервер базы данных в сети.

netstat -tlpn | grep mysql

я ожидаю что-то вроде этого:

tcp        0      127.0.0.1:3306              0.0.0.0:*                   LISTEN 

Если сервер базы данных прослушивает 127.0.0.1:3306, соединение разрешено только с локального хоста. Измените следующие строки в 50-server.cnf и перезапустите службу базы данных (service mariadb restart).

bind-address = 0.0.0.0
  • Разрешить прослушивание нескольких сетевых интерфейсов или определенного IP-адреса с bind-address

Ваши таблицы mysql.user показывают, что пользователь root может подключаться только с localhost а также 127.0.0.1,

Если вам нужен удаленный пользователь, который может подключиться к базе данных из любого места (@'%'), с правами суперпользователя вы можете создать другого суперпользователя.

GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'%' IDENTIFIED BY 'use_a_secure_password';

Теперь суперпользователь имеет те же привилегии, что и учетная запись root по умолчанию, будьте осторожны!

В качестве последнего шага следите за любыми обновлениями пользовательских привилегий:

FLUSH PRIVILEGES;

Также я заметил, что ваши таблицы mysql.user показывают пользователя ruser которые могут подключаться по сети.

Полезные ресурсы:

Вы также можете проверить следующий ответ: /questions/2977082/mysql-dobavlenie-polzovatelya-dlya-udalennogo-dostupa/2977084#2977084

Итак, во-первых, поймите, что пользователи создаются как комбинации имени пользователя / имени хоста. Так root@localhost отличается от root@192.168.1.5 Так что для удаленного подключения вы не можете использовать root@localhost так как это для подключения от localhost

Итак, создайте другого пользователя.

Во-вторых, если root@localhost уже существует, то не используйте identified by так как у вас уже есть пароль....

Другие вопросы по тегам