授予MariaDB特权

时间:2014-11-25 15:03:17

标签: sql root mariadb grant mysql-error-1045

我试图在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]>

我已经尝试了我在互联网上找到的所有内容,但我也遇到了同样的错误。 我也尝试过创建新用户,但我仍尝试授予每个用户同样的错误。

有人可以帮我解决这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

好的,首先,要了解用户是作为用户名/主机名组合创建的。因此root@localhostroot@192.168.1.5不同所以对于远程连接,您无法使用root@localhost,因为这是用于从localhost

进行连接

所以,创建一个不同的用户。

其次,如果root@localhost已经存在,那么请不要使用identified by,因为您已经有了密码....

答案 1 :(得分:0)

首先,我将检查数据库服务器是否在网络上侦听。

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
  • 允许使用bind-address在多个网络接口或特定IP地址上侦听

您的mysql.user表显示,用户root只能从localhost127.0.0.1连接。

如果您需要一个远程用户,该用户可以使用root用户特权从任何地方(@'%')连接到数据库,则可以创建另一个超级用户。

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

现在,超级用户具有与默认根帐户相同的特权,请注意!

作为更新用户权限的最后一步:

FLUSH PRIVILEGES;

我还注意到您的mysql.user表显示了可以通过网络连接的用户ruser

使用完整的资源:

您还可以检查以下答案: https://stackoverflow.com/a/16288118/3095702