標籤:mysql、許可權、使用者
一、關於MySQL許可權的幾點常識:
1、MySQL的許可權系統主要用來驗證使用者的操作許可權。
2、在MySQL內部,許可權資訊存放在MySQL資料庫的granttable裡。當mysql啟動後,granttable裡的資訊會寫入記憶體。
3、MySQL 使用user name 加 host name 來作為標識符。
通過這種標識符,可以用來區分不同host上的相同的user name。
4、MySQL 許可權控制有2種策略:
1)根據密碼是否正確來控制用戶端的串連。
2)假設可以正常connect,server還可以檢查每個satement是否有許可權去執行。如果只有某張表的select 許可權,就不能進行drop 操作。
5、如果使用者的許可權改變,當前已串連的會話使用者不會受影響,下次登入才會生效。
二、關於MySQL的幾個有關許可權表的含義:
user:使用者帳號、全域許可權
db:庫層級許可權
host:廢棄
tables_priv:表層級許可權
colums_priv:列層級許可權
procs_priv:預存程序和儲存函數相關的許可權
proxies_priv:代理使用者權限
三、MySQL使用者帳號的建立規則
使用者名稱@主機
使用者名稱:16字元以內
主機:
主機名稱:www.test.com,mysql
IP:192.168.2.1
網路地址:192.168.0.0/255.255.0.0
萬用字元:%,192.168.%.%,%.test.com
四、MySQL的使用者權限層級
服務管理類:super
庫:CREATE
表:DELETE、ALTER
列:INSERT、SELECT、UPDATE
更多層級可參考MySQL官方文檔
五、與許可權相關的幾個命令
GRANT 許可權,... ON [物件類型] db.{table|routine} TO ‘username‘@‘host‘ [INDENTIFIED BY ‘password‘];
REVOKE 許可權,... ON [物件類型] db.{table|routine} FROM ‘username‘@‘host‘;
SHOW GRANTS FOR ‘username‘@‘host‘;
CREATE USER ‘username‘@‘host‘ [IDENTIFIED BY ‘password‘];
DROP USER ‘username‘@‘host‘;
RENAME USER old_name TO new_name;
六、許可權的操作命令舉例
查看當前資料庫的所有使用者:
select user,host,password from mysql.user;
給使用者賦予super許可權(super和ALL PRIVILEGES都可以):
GRANT super ON *.* TO ‘mysql‘@‘localhost‘;
GRANT ALL PRIVILEGES ON *.* TO ‘mysql‘@‘localhost‘;
刪除使用者的super許可權(super和ALL PRIVILEGES都可以):
REVOKE super ON *.* FROM ‘mysql‘@‘localhost‘;
REVOKE ALL PRIVILEGES ON *.* FROM ‘mysql‘@‘localhost‘;
查看賦予使用者的許可權
SHOW GRANTS FOR ‘mysql‘@‘localhost‘;
七、MySQL的問題處理
1、MySQL登入密碼忘記時的恢複操作
啟動mysql_safe時傳遞兩個參數:
--skip-grant-tables 跳過授權表
--skip-networking 為了安全,防止網路登入
登入方式一:
修改/etc/init.d/mysql
650) this.width=650;" title="qqq.png" src="http://s3.51cto.com/wyfs02/M00/53/DE/wKiom1RytyujvuBPAACcs_s8lZQ687.jpg" alt="wKiom1RytyujvuBPAACcs_s8lZQ687.jpg" />
登入方式二:
直接在my.cnf配置
[mysqld]
skip-grant-tables
skip-networking
而後修改密碼:
通過更新授權表方式直接修改其密碼,而後移除此兩個選項重啟伺服器
UPDATE user SET PASSWORD=PASSWORD(‘123456‘) WHERE User=‘root‘
2、用戶端串連MySQL資料庫速度慢的問題
直接在my.cnf配置,關閉DNS的反向解析參數
[mysqld]
skip-name-resolve
本文出自 “初來乍到-Jasen” 部落格,請務必保留此出處http://shengjian.blog.51cto.com/3022827/1581854
MySQL的使用者和許可權介紹