Mysql使用者和許可權管理

來源:互聯網
上載者:User

標籤:mysql許可權   mysql使用者   

使用者
MySQL的使用者和作業系統沒有關係
使用者公開的,密碼加密的   加密方式:password函數

使用者帳號:
    使用者名稱@主機
        使用者名稱:16字元以內
        主機:
            主機名稱:www.benet.com, mysql
            IP: 192.168.1.1
            網路地址:
                192.168.1.0/255.255.255.0

            萬用字元:%,_
                192.168.%.%
                %.benet.com


建立使用者的兩種方法:
1.使用命令建立。最基本許可權,一般建立完成之後會自動讀取許可權列表
文法:
CREATE USER [email protected] [IDENTIFIED BY ‘password‘]
例子:建立使用者為test,主機為萬用字元,密碼為test
mysql> CREATE USER [email protected]‘%‘ IDENTIFIED BY ‘test‘;

2.直接在MySQL.user表中插入使用者資訊
INSERT INTO mysql.user
插入資料不會重新讀取許可權,需要手動重新整理
mysql> FLUSH PRIVILEGES;

刪除使用者
DROP USER ‘username‘@‘localhost‘;
重新命名使用者
RENAME USER 舊使用者名稱 TO 新使用者名稱;

許可權
設定使用者權限(使用者不存在時,則建立使用者)
GRANT 許可權列表 ON 資料庫名.表名 TO 使用者名稱@來源地址 [ IDENTIFIED BY ‘密碼’ ]
查看使用者的許可權
SHOW GRANTS FOR 使用者名稱@網域名稱或IP
撤銷使用者的許可權
REVOKE 許可權列表 ON 資料庫名.表名 FROM 使用者名稱@網域名稱或IP

操作:
查看使用者權限
mysql> SHOW GRANTS FOR [email protected]‘%‘;

+-----------------------------------------------------------------------------------------------------+| Grants for [email protected]%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO ‘test‘@‘%‘ IDENTIFIED BY PASSWORD ‘*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29‘ |+-----------------------------------------------------------------------------------------------------+


使用test使用者登入資料庫
查看資料庫只能看到一個資料庫
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+-------------------+
建立一個資料庫,失敗
mysql> CREATE DATABASE aa;
ERROR 1044 (42000): Access denied for user ‘test‘@‘%‘ to database ‘aa‘

允許test使用者建立資料庫
mysql> GRANT CREATE ON testdb.* TO ‘test‘@‘%‘;


使用test使用者建立資料庫沒有報錯
mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.00 sec)
進入testdb資料庫建立表成功
mysql> USE testdb;
Database changed
mysql> CREATE TABLE testtb (ID INT UNSIGNED AUTO_INCREMENT NOT NULL, Name CHAR(20), PRIMARY KEY(ID));
Query OK, 0 rows affected (0.21 sec)

往testtb表中插入資料報錯
mysql> INSERT INTO testdb (Name) VALUES (‘zhangsan‘);
ERROR 1142 (42000): INSERT command denied to user ‘test‘@‘localhost‘ for table ‘testdb‘

授予test使用者往testdb.*中所有表插入資料的許可權
mysql> GRANT INSERT ON testdb.* TO ‘test‘@‘%‘;  

test使用者重新串連資料庫,(必須重新串連資料庫)插入資料成功
mysql> INSERT INTO testtb (Name) VALUES (‘zhangsan‘);
Query OK, 1 row affected (0.05 sec)

允許test使用者添加欄位
mysql> GRANT ALTER ON testdb.* TO ‘test‘@‘%‘;      
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

使用test使用者給testtb表插入一個Age欄位
mysql> ALTER TABLE testtb ADD Age TINYINT UNSIGNED;


設定test使用者只能更改年齡欄位
mysql> SELECT * FROM testtb;
+----+----------+------+
| ID | Name     | Age  |
+----+----------+------+
|  1 | zhangsan | NULL |
+----+----------+------+
授權test可以更改年齡欄位
mysql> GRANT UPDATE(Age) ON testdb.testtb TO ‘test‘@‘%‘;

驗證test更改使用者年齡成功,更改姓名報錯
mysql> UPDATE testtb SET Age=30 WHERE ID=1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE testtb SET Name=lisi WHERE ID=1;        
ERROR 1143 (42000): UPDATE command denied to user ‘test‘@‘localhost‘ for column ‘Name‘ in table ‘testtb‘

查看自己的許可權
欄位層級許可權單獨儲存
mysql> SHOW GRANTS FOR ‘test‘@‘%‘;

+-----------------------------------------------------------------------------------------------------+| Grants for [email protected]%                                                                                   |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO ‘test‘@‘%‘ IDENTIFIED BY PASSWORD ‘*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29‘ || GRANT SELECT, INSERT, CREATE, ALTER ON `testdb`.* TO ‘test‘@‘%‘                                     || GRANT UPDATE (Age) ON `testdb`.`testtb` TO ‘test‘@‘%‘                                               |+-----------------------------------------------------------------------------------------------------+

收回使用者的SELECT許可權
mysql> REVOKE SELECT ON testdb.* FROM ‘test‘@‘%‘;


本文出自 “梅花香自苦寒來” 部落格,請務必保留此出處http://wangjunkang.blog.51cto.com/8809812/1586089

Mysql使用者和許可權管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.