MySQL基本用法-系統安全性

Henryz0926發表於2020-11-30

MySQL安全原則:

  • 資料庫伺服器通常包含關鍵資料,確保這些資料的安全和完整需要利用訪問控制
  • MySQL伺服器的安全基礎是:使用者應該對他們所需要的資料具有適當的訪問權,既不能多也不能少。換句話說,使用者不能對過多的資料具有過多的訪問權
  • 不要使用root 應該嚴肅對待root登入的使用。 僅在絕對需要時使用它(或許在你不能登入其他管理賬號時使用) 不應該在日常的MySQL操作中使用root,不然一旦改名或者誤刪,系統容易崩潰

瞭解MySQL的安全性

1. 管理賬戶
cmd模式:
cd進入mysql\bin檔案位置
輸入 mysql -u root -p
當前無密碼狀態直接在輸入密碼提示時回車跳過(此時root賬號比較危險)
此時可以用root檢視和操作所有內建table
use mysql(進去mysql資料庫)
select Host, User, Password from user(檢視所有user資訊)

2. 建立使用者賬號
create user username identified by 'your password';
此時一個新的使用者建立成功,名字是username,%(Host)代表任何機器,只要是在網路上能和你的機器相連的機器都可以用此使用者名稱登入
所以可以根據對方的ip建立使用者:
create user username@'ip address' identified by 'your password'
也可以根據相關機器名建立使用者:
create user username@'dbserver' identified by 'your password'

3. 刪除賬號
drop user username@'ip address'
drop user username@'dbserver'
刪除本機使用者直接drop user username

4. 設定訪問許可權
當我們用非root user登入時,我們可以用root賬號來給這些使用者設定許可權
給與dbname這個資料庫的所有資源
grant select on dbname.* to username;
給與dbname這個資料庫的一個table的資源
grant select on dbname.tablename to username;
收回許可權
revoke select on dbname.* from username
revoke select on dbname.tablename from username

5. 更改密碼
set password for username@'localhost' = Password('new password');
localhost可換成別的ip或者servername

特殊情況處理

  1. 普通使用者密碼丟失
    登入管理員賬戶或者許可權比user更高的使用者來重設密碼
    set password for username@'localhost' = Password('new password');
  2. Root密碼丟失
    • 先在windows系統的服務中關閉mysql服務(win10 搜尋services)
    • 進入mysql\bin\my.ini
    • 在[mysqld]下面的路徑下方加入
      skip-grant-tables
    • 啟動mysql服務
    • 在命令列 mysql -u root -p
    • 忽略輸入密碼那步
    • use mysql
    • update user set password = password('new password') where user = 'root'
    • 停止mysql服務
    • 進入my.ini 註釋掉skip-grant-tables
    • 重新啟動mysql服務

相關文章