解决mariadb grant ERROR 1045 (28000): Access denied for user

下面咱们一块儿来看一篇解决mariadb grant ERROR 1045 (28000): Access denied for user问题,但愿文章可以帮助到各位朋友。
 

用mariadb也有一段时间了,经常使用命令和语法,基本没变。比较复杂一点的,例如replication,也没有发现根mysql有什么不一样的地方。php

不过,今天真发现有不一样的地方了,mariadb的权限管理根mysql不同,mysql能够建立一个根root帐户同等权限的帐户,可是mariadb就不行了,写法上也所不一样。html

1,mariadb  grant受权报错
   
MariaDB [(none)]> grant all privileges on *.* TO tank@'192.168.%' IDENTIFIED BY 'test';  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) mysql

相同的命令在mysql下,执行是没有任何问题的。
一开始觉得是mariadb的root帐号和密码有问题,检查后没问题。sql

2,mariadb与mysql root权限不一样spa

查看了一下,root帐户所拥有的权限,mariadb和mysql是不同的。
   
MariaDB [(none)]> show grants\G;  
*************************** 1. row ***************************  
Grants for root@localhost: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'localhost' WITH GRANT OPTION  
1 row in set (0.00 sec)  
  
ERROR: No query specified  
   
mysql> show grants;  
+---------------------------------------------------------------------+  
| Grants for root@localhost |  
+---------------------------------------------------------------------+  
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |  
+---------------------------------------------------------------------+  
1 row in set (0.00 sec) .net

3,mariadb与mysql grant语法不一样htm

具体的讲法以,请参考:https://mariadb.com/kb/en/mariadb/grant/
   
MariaDB [(none)]> grant all on test.* TO tank@'192.168.%' IDENTIFIED BY 'test';  
Query OK, 0 rows affected (0.00 sec)  
  
MariaDB [(none)]> grant select on *.* TO tank@'192.168.%' IDENTIFIED BY 'test';  
Query OK, 0 rows affected (0.00 sec) ci

第一条命令,将test库的全部权限都给tank
第二条命令,将全部库和表的select权限给tank
注意:all不能和*.*一块儿使用的,否则就报错了。get

相关文章
相关标签/搜索