【问题标题】:Grant privileges on MariaDB授予 MariaDB 权限
【发布时间】:2015-01-23 15:42:40
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

  • root 帐户应该已经拥有所有权限。毕竟,这是默认帐户。它应该具有所有特权,因此它可以创建其他特权较低的帐户。 show grants for root@localhost 显示什么?
  • 授予选择、插入、更新、删除、创建、删除、重新加载、关闭、处理、文件、参考、索引、更改、显示数据库、超级、创建临时表、锁定表、执行、复制SLAVE、REPLICATION CLIENT、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、CREATE USER、EVENT、TRIGGER ON . TO 'root'@'localhost' IDENTIFIED by PASSWORD '****** ************' 带有授权选项
  • 但是我还是不能远程连接到数据库
  • 无法连接怎么办?没有权限?拒绝连接? per.den 是账号问题,con.ref 是网络问题(防火墙,或者mysql没有监听默认端口等)。
  • 我拒绝用户“root”访问(使用密码:是)

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


【解决方案1】:

好的,首先,了解用户是作为用户名/主机名组合创建的。所以root@localhost 不同于root@192.168.1.5 所以对于远程连接你不能使用root@localhost 因为那是从localhost 连接的

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

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

【讨论】:

    【解决方案2】:

    首先我会检查数据库服务器是否正在监听网络。

    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://stackoverflow.com/a/16288118/3095702

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2019-12-28
      • 2021-02-05
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多