MySQL 8.0.23 數(shù)據(jù)庫用戶管理、權限分配和遠程連接

這個目前應該是MySQL比較新的版本了,教程僅在Linux平臺上驗證通過,其他平臺請自證。提供步驟和思路方便快速分析和定位問題。

一、數(shù)據(jù)庫用戶管理

  1. 創(chuàng)建新用戶并指定密碼
    創(chuàng)建非root用戶和設置密碼

      # 用root用戶登錄分配jackmin用戶的本地mysql賬戶
      create user 'jackmin'@'localhost' identified with mysql_native_password by '5201314!';
      flush privileges; # 刷新下,不然無法生效
    
  2. 重置用戶的密碼

    # 用5201314!密碼登錄
    mysql -u jackmin -p
    # 用root用戶修改jackmin的密碼
    alter user 'jackmin'@'localhost' identified by '5209999!';
    # 退出mysql后用舊密碼登錄失敗,新jackmin密碼5209999!登錄成功
    mysql -u jackmin -p
    use mysql; # 但提示Access denied需要配置權限,見3
    
  3. 刪除該用戶

    drop user 'jackmin'@'localhost';
    
  4. 設置用戶是否可以遠程訪問或指定ip訪問

    3.1. 用root用戶查看用戶和host關系

    use mysql;
    # root用戶查看jackmin用戶和host關系
    select user, host from user where user='jackmin';
    +---------+-----------+
    | user    |   host    |
    +---------+-----------+
    | jackmin | localhost |
    +---------+-----------+
    

    3.2. 設置允許指定ip或允許遠程訪問(任意ip)

    # 用指定ip訪問
    update user set host='xxx.xx.xx.x' where user='jackmin'; 
    # 允許遠程(任意ip)訪問
    update user set host='%' where user='jackmin';
    

二、用戶權限分配

  1. 給用戶分配權限(操作和資源)

    1.1. 給用戶僅分配 查詢 操作權限,針對數(shù)據(jù)庫test_db操作tbl_1表(有個數(shù)據(jù)庫叫test_db由root創(chuàng)建,內含tbl_1和tbl_2表)

    # 用root用戶給jackmin分配權限
    grant select on test_db.tbl_1 to 'jackmin'@'localhost';
    # 如果jackmin用戶可以給其他用戶賦權(不超過自身擁有的權利:查詢)
    grant select on test_db.tbl_1 to 'jackmin'@'localhost' with grant option;
    flush privileges;
    # 退出mysql嘗試用jackmin登錄訪問test_db和tbl_1、tbl_2
    # 查看權限
    show grants for jackmin;
    use test_db;
    show tables; # 我們只能看到tbl_1; 而看不到 tbl_2
    # 嘗試查詢
    select * from tbl_1; # 可以
    select * from tbl_2; # 不可以
    # 嘗試插入tbl_1
    insert into tbl_1 value("2","titlename1", "username1");# INSERT command denied to user 'jackmin'@'localhost' for table 'tbl_1'
    # 除查詢外無其他操作權限
    

    1.2. 給用戶分配所有權限,針對所有test_db數(shù)據(jù)庫的所有表

    # 用root用戶給jackmin增加權限insert
    grant select, insert on test_db.tbl_1 to 'jackmin'@'localhost';
    # 用root用戶給jackmin增加test_db的所有表的所有權限
    grant all privileges on test_db.* to 'jackmin'@'localhost';
    flush privileges;
    

    1.3. 撤銷權限

    # root用戶撤銷對某個資源的操作權限
    revoke privileges on test_db.tbl_1 from 'jackmin'@'localhost';
    # root用戶撤銷所有權限
    revoke all privileges on *.* from 'jackmin'@'localhost';
    # 查看用戶權限或者用jackmin用戶登錄,權限撤銷成功
    show grants for jackmin;
    

    1.4. 查看用戶權限

    show grants for jackmin;
    

三、配置用戶允許遠程連接

根據(jù)需求在完成理解前面步驟后,接下來需要配置允許遠程連接(生產(chǎn)環(huán)境請通過ssh隧道方式,且mysql配置文件bind-address為特定ip或本機)

  1. 用戶配置
    首先配置用戶支持遠程登錄,簡單改user表里面的host為'%'或特定ip(生產(chǎn)上可通過ssh隧道,host為指定跳板機ip這樣更安全,也不修改配置文件)

    update user set host='%' where user='jackmin';
    
  2. mysql配置

    修改mysql配置文件,注釋掉bind-address或改為0.0.0.0,表示監(jiān)聽所有客戶端連接

    保存后重啟mysqld服務

  3. 服務器配置

    服務器防火墻和iptables規(guī)則允許3306端口的訪問;通過查看

    iptables -Lsudo ufw allow 3306

  4. 云服務器安全組配置

    主要是云服務器的安全組配置出入站規(guī)則,放行3306端口


最后,感謝您的閱讀,由于時間倉促,文章內容難免有不妥之處,歡迎交流和指正~~
Mark一下 惟月慎行 再也不會迷路了^_^!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,918評論 0 11
  • 彩排完,天已黑
    劉凱書法閱讀 4,501評論 1 3
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,943評論 2 7

友情鏈接更多精彩內容