mysql服務器進程在啓動的時候會讀取這6張表,並在內存中生成受權表,因此這幾個文件是直接加載進內存的。mysql
之後後續的任何用戶登陸及其訪問權限的檢查都經過檢查這6張表來實現的。經過訪問內存上所生成的結構信息來完成。sql
user :包含用戶帳號、全局權限以及其餘的非權限字段數據庫
db :數據庫級別權限的定義服務器
host :廢棄!網絡
tables_priv :表級別權限ide
columns_priv :列級別權限函數
procs_priv :存儲過程和存儲函數相關的權限spa
proxies_priv :代理用戶權限代理
用戶帳號進程
用戶名@主機
用戶名:16字符之內
主機:主機名、IP、網絡地址、通配符(%、_)
--skip-name-resolve :跳過主機名解析(在登陸時使用)
權限級別
全局級別:
庫級別
表級別
列級別
存儲過程和存儲函數
建立用戶
create 權限 用戶名@主機名 identified by "密碼"
flush privileges; 重讀受權表,讀取用戶信息
show grants for 用戶名@'主機名'; 查看用戶帳戶信息
修改管理員密碼
退出並關閉mysql :service mysql stop
手動修改啓動文件:/etc/init.d/mysql 修改第283行
添加:
--skip-grant-tables :跳過受權表
--skip-networking :跳過網絡
啓動mysql服務:service mysql start
use mysql :指定數據庫
select User,Host,Password from user; :查看用戶表
update user set Password=PASSWORD('密碼') where User='root'; :手動修改密碼
退出數據庫,關閉服務!
修改/etc/init.d/mysql,把添加的那兩行刪除
再從新啓動服務,就能夠登錄了