MySQL 使用者及許可權管理?

bruce_qi發表於2019-09-12

  檢視mysql系統當前存在的使用者

通過1中,我們知道資料庫的使用者資訊存在mysql資料庫中的user表中,我們查詢該表,結果如下。Host欄位是當前使用者可登入的ip地址(如果是*則代表可任意地址登入),User欄位是使用者名稱稱,Password是使用者密碼。

mysql> select Host, User, Password from user;

|Host | User | Password|
| :---: | :---: | :---:|
|localhost | root | 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9|
|127.0.0.1 |  root | 
6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9|
|::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9|

  自定義使用者

為什麼需要自定義使用者呢?我們會從如下幾個方面考慮,許可權、職能。

預設的root使用者屬於mysql中的超級管理員的職能,如果每個人都能拿到該root的許可權,容易發生一些操作錯誤,輕者資料庫部分資料出現問題,重則整個資料庫遭到毀滅。

預設的root使用者屬於mysql中的超級管理員的職能,容易遭到懷有惡意企圖的人所利用。

預設的root使用者屬於mysql中的超級管理員的職能,給定指定使用者相應的許可權,可以保證每個使用者只能使用該使用者職責內的許可權,既可以保證資料庫的分工更加精細化,同時也保證了資料庫的安全。

 建立mysql使用者


CREATE USER 'username'@'host' IDENTIFIED BY 'password';

// 給該使用者授予相應的許可權(privileges_name為all時,則表示授予所有許可權;當privilege_name具體到某些許可權是,privileges不需要新增,下面收回許可權處的含義一致)

GRANT privileges_name  privileges ON databasename.tablename TO 'username'@'host';

// 重新整理許可權,使新建立的使用者能夠使用

flush privileges;

// 收回使用者許可權

phpREVOKE privileges_name privilege ON databasename.tablename FROM 'username'@'host';

如果我們建立了相同的使用者名稱,需要刪除第一次建立時的使用者名稱,不能只刪除mysql庫下的user表資訊,應該使用drop user username命令進行刪除使用者操作。然後使用flushprivileges進行許可權重新整理。如果按照上述操作,提示使用者無法登入,檢視防火牆狀態,centos7防火牆設定參考連結

 刪除使用者


drop USER 'username'@'host';

 重新整理許可權


flush privilege

 修改使用者密碼


// 修改指定使用者密碼

set password for'username'@'host' = password('newpassword'); 

// 設定當前登入使用者的密碼

set password = password('newpassword'); 

 centos設定防火牆

1.centos6設定防火牆

a.檢視防火牆狀態


service iptable status

b.重啟防火牆


service iptables restart

c.開放埠


/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

/etc/rc.d/init.d/iptables save

d.檢視開放的埠


/etc/init.d/iptables status

e.關閉防火牆


servcie iptables stop(臨時關閉)

chkconfig iptables off(永久關閉)

f.啟動防火牆


service iptables start(臨時生效)

chkconfig iptables on(永久生效)

2.centos7設定防火牆

a.檢視防火牆狀態(3種方式)


1.firewall-cmd --state

2.systemctl list-unit-files|grep firewalld.service

3.systemctl status firewalld.service

b.重啟防火牆


systemctl restart firewalld.service

c.開放埠


firewall-cmd --zone=public --add-port=80/tcp --permanent

–zone #作用域

–add-port=80/tcp #新增埠,格式為:埠/通訊協議

–permanent #永久生效,沒有此引數重啟後失效

d.檢視開放的埠


firewall-cmd --list-ports

e.關閉防火牆


systemctl stop firewalld.service(臨時關閉)

systemctl disable firewalld.service(永久禁用)

f.啟動防火牆


systemctl start firewalld.service

相關文章