mysql 新增使用者訪問許可權

2021-07-06 06:00:24 字數 4797 閱讀 2677

,感謝作者

【王富貴】

grant 許可權 on 資料庫物件 to 使用者 password

mysql> grant all on *.* to root@"%" identified by 'abc123';

query ok, 0 rows affected (0.01 sec)

mysql> select host,user,password  

from user;

+--------------+---------+------------------+

| host  

| user  

| password    |

+--------------+---------+------------------+

| localhost  

| root  

|   |

| selfserv  

| root  

|   |

| 127.0.0.1  

| root  

|   |

| localhost  

|  |   |

| selfserv  

|  |   |

| %  

| abc  

| 4b5698aa4603595b |

| 172.17.15.50 | zsgd  

| 032c41e8435273a7 |

| %  

| sysuser | 3256e6786e6650e9 |

| %  

| sg  

| 032c41e8435273a7 |

| %  

| root  

| 3256e6786e6650e9 |

+--------------+---------+------------------+

10 rows in set (0.00 sec)

mysql>

grant 許可權 on 資料庫物件 to 使用者

一、grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利。 

grant select on testdb.* to common_user@'%』

grant insert on testdb.* to common_user@'%'

grant update on testdb.* to common_user@'%'

grant delete on testdb.* to common_user@'%'

或者grant select, insert, update, delete on testdb.* to common_user@'%'

二、grant 資料庫開發人員,建立表、索引、檢視、儲存過程、函式。。。等許可權。 

grant 建立、修改、刪除 mysql 資料表結構許可權。

grant create on testdb.* to developer@'192.168.0.%';

grant alter on testdb.* to developer@'192.168.0.%';

grant drop on testdb.* to developer@'192.168.0.%';

grant 操作 mysql 外來鍵許可權。

grant references on testdb.* to developer@'192.168.0.%';

grant 操作 mysql 臨時表許可權。

grant create temporary tables on testdb.* to developer@'192.168.0.%';

grant 操作 mysql 索引許可權。

grant index on testdb.* to developer@'192.168.0.%';

grant 操作 mysql 檢視、檢視檢視源** 許可權。

grant create view on testdb.* to developer@'192.168.0.%';

grant show view on testdb.* to developer@'192.168.0.%';

grant 操作 mysql 儲存過程、函式 許可權。

grant create routine on testdb.* to developer@'192.168.0.%'; — now, can show procedure status

grant alter routine on testdb.* to developer@'192.168.0.%'; — now, you can drop a procedure

grant execute on testdb.* to developer@'192.168.0.%';

三、grant 普通 dba 管理某個 mysql 資料庫的許可權。 

grant all privileges on testdb to dba@'localhost'

其中,關鍵字 「privileges」 可以省略。

四、grant 高階 dba 管理 mysql 中所有資料庫的許可權。 

grant all on *.* to dba@'localhost'

五、mysql grant 許可權,分別可以作用在多個層次上。 

1. grant 作用在整個 mysql 伺服器上:

grant select on *.* to dba@localhost; — dba 可以查詢 mysql 中所有資料庫中的表。

grant all on *.* to dba@localhost; — dba 可以管理 mysql 中的所有資料庫

2. grant 作用在單個資料庫上:

grant select on testdb.* to dba@localhost; — dba 可以查詢 testdb 中的表。

3. grant 作用在單個資料表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

這裡在給乙個使用者授權多張表時,可以多次執行以上語句。例如:

grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345';

grant select on smp.mo_sms to mo_user@'%' identified by '123345';

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在儲存過程、函式上:

grant execute on procedure testdb.pr_add to 'dba'@'localhost'

grant execute on function testdb.fn_add to 'dba'@'localhost'

六、檢視 mysql 使用者許可權 

檢視當前使用者(自己)許可權:

show grants;

檢視其他 mysql 使用者許可權:

show grants for zhangkh@localhost;

七、撤銷已經賦予給 mysql 使用者許可權的許可權。 

revoke 跟 grant 的語法差不多,只需要把關鍵字 「to」 換成 「from」 即可:

grant all on *.* to dba@localhost;

revoke all on *.* from dba@localhost;

八、mysql grant、revoke 使用者許可權注意事項 

1. grant, revoke 使用者許可權後,該使用者只有重新連線 mysql 資料庫,許可權才能生效。

2. 如果想讓授權的使用者,也可以將這些許可權 grant 給其他使用者,需要選項 "grant option"

grant select on testdb.* to dba@localhost with grant option;

這個特性一般用不到。實際中,資料庫許可權最好由 dba 來統一管理。

mysql授權表共有5個表:user、db、host、tables_priv和columns_priv。

授權表的內容有如下用途:

user表

user表列出可以連線伺服器的使用者及其口令,並且它指定他們有哪種全域性(超級使用者)許可權。在user表啟用的任何許可權均是全域性許可權,並適用於所有資料庫。例如,如果你啟用了delete許可權,在這裡列出的使用者可以從任何表中刪除記錄,所以在你這樣做之前要認真考慮。

db表db表列出資料庫,而使用者有許可權訪問它們。在這裡指定的許可權適用於乙個資料庫中的所有表。

host表

host表與db表結合使用在乙個較好層次上控制特定主機對資料庫的訪問許可權,這可能比單獨使用db好些。這個表不受grant和revoke語句的影響,所以,你可能發覺你根本不是用它。

tables_priv表

tables_priv表指定表級許可權,在這裡指定的乙個許可權適用於乙個表的所有列。

columns_priv表

columns_priv表指定列級許可權。這裡指定的許可權適用於乙個表的特定列。

注:對於grant usage on,檢視手冊有如下介紹和例項:

mysql> grant usage on *.* to 'zhangkh'@'localhost';

乙個賬戶有使用者名稱zhangkh,沒有密碼。該賬戶只用於從本機連線。未授予許可權。通過grant語句中的usage許可權,你可以建立賬戶而不授予任何許可權。它可以將所有全域性許可權設為』n'。假定你將在以後將具體許可權授予該賬戶。

mysql加訪問許可權 mysql 新增使用者訪問許可權

grant 許可權 on 資料庫物件 to 使用者 passwordmysql grant all on to root identified by abc123 query ok,0 rows affected 0.01 sec mysql select host,user,password fr...

MySQL新增遠端訪問許可權

給遠端連線許可權 問題 遠端連線mysql資料庫出現 error 1130 host root is not allowed to connect to this mysql server 錯誤時解決方法!修改root的許可權 use mysql select host from user wher...

mysql新增使用者和使用者許可權

mysql新增使用者 使用可以對mysql資料庫使用者表有操作許可權的使用者名稱登陸mysql insert into user host,user,password values name password 如果work使用者沒有登陸許可權,則 killall mysqld share mysql...