授予MariaDB的特权

4

我正在尝试为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]>

我在网上尝试了所有方法,但我仍然收到相同的错误。 我也尝试创建新用户,但我在每个尝试授权的用户上仍然收到相同的错误。

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

先感谢您的帮助。


根账户应该已经拥有所有特权。毕竟,它是默认账户。它应该拥有所有特权,以便可以创建其他权限较低的账户。show grants for root@localhost 显示了什么? - Marc B
但我仍然无法执行到数据库的远程连接。 - Ivanoff
无法连接怎么办?权限被拒绝?连接被拒绝?per.den是一个账户问题,con.ref是一个网络问题(防火墙或MySQL未在默认端口上监听等)。 - Marc B
root@localhost 只允许本地连接。如果您正在尝试从其他机器连接到 root 帐户(非常不安全,除了系统管理员任务外永远不要使用 root 帐户),那么您需要创建 root@其他机器的IP - Marc B
当我创建一个名为root@myip的用户后,尝试使用GRANT命令时,我收到了相同的错误信息:( - Ivanoff
显示剩余3条评论
2个回答

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

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

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

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

现在,超级用户拥有与默认的root账户相同的特权,请注意!
在更新用户权限后的最后一步:
FLUSH PRIVILEGES;

我注意到你的mysql.user表中显示了一个名为ruser的用户可以通过网络连接。

有用的资源:

你还可以查看以下答案: https://dev59.com/e2Qo5IYBdhLWcg3wI8jx#16288118


0

首先,要理解用户是作为用户名/主机名组合创建的。因此,root@localhostroot@192.168.1.5是不同的。因此,对于远程连接,您不能使用root@localhost,因为它是用于从localhost连接的。

因此,请创建一个不同的用户。

其次,如果root@localhost已经存在,则不要使用identified by,因为您已经有一个密码...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接