【Mysql】flushprivilges重新整理系統許可權相關表

北在南方發表於2016-04-14
對mysql.user進行手工操作,比如新增新使用者或更改使用者的舊密碼後,需用flush privileges重新整理MySQL的系統許可權相關表,否則會出現拒絕訪問!
以root身份登入資料庫,建立使用者yangql
mysql> create user yangql  identified by `yangql`;
Query OK, 0 rows affected (0.02 sec)
mysql> exit
Bye
測試連線。
[root@rac3 home]# mysql -uyangql -pyangql
mysql> show databases;
+——————–+
| Database           |
+——————–+
| information_schema | 
| test               | 
+——————–+
2 rows in set (0.00 sec)
mysql> exit
Bye
以root使用者登入,手工修改mysql.user表,這裡演示更新使用者的密碼,對於插入新建使用者操作類似!
[root@rac3 home]# mysql 
mysql> show databases;                            
+——————–+
| Database           |
+——————–+
| information_schema | 
| latin              | 
| lyz                | 
| momo               | 
| mysql              | 
| test               | 
| test2              | 
| yangdb             | 
| yangutf            | 
+——————–+
9 rows in set (0.00 sec)
mysql> update mysql.user set password=password(`yql`) where user=`yangql`; 
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from mysql.user where user=`yangql`;
+——+——–+——————+————-+
| Host | User   | Password         | Select_priv |
+——+——–+——————+————-+
| %    | yangql | 66d7dc1c3dfc53e6 | N           |
+——+——–+——————+————-+
1 row in set (0.00 sec)

mysql> exit
Bye
沒有使用flush privilges之前,可以使用老的密碼進行登入。
[root@rac3 home]# mysql -uyangql -pyangql
mysql> show databases;
+——————–+
| Database           |
+——————–+
| information_schema | 
| test               | 
+——————–+
2 rows in set (0.00 sec)
mysql> exit
Bye
執行重新整理操作:
[root@rac3 home]# mysql
mysql> flush privilges;//重新整理系統許可權相關的表
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near `privilges` at line 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> 
再次使用舊密碼登入
[root@rac3 ~]# mysql -uyangql  -pyangql
ERROR 1045 (28000): Access denied for user `yangql`@`localhost` (using password: YES)
再次使用新密碼登入
[root@rac3 ~]# mysql -uyangql  -pyql
Welcome to the MySQL monitor.  Commands end with ; or g.
mysql> show databases;
+——————–+
| Database           |
+——————–+
| information_schema | 
| test               | 
+——————–+
2 rows in set (0.00 sec)
mysql> exit
Bye
[root@rac3 ~]# 
還有一種方法,就是重新啟動mysql伺服器,來使新設定生效。


相關文章