首页主机资讯Ubuntu MySQL权限设置怎样操作

Ubuntu MySQL权限设置怎样操作

时间2025-10-01 16:06:04发布访客分类主机资讯浏览861
导读:Ubuntu下MySQL权限设置操作指南 1. 登录MySQL服务器 以root用户(或具有足够权限的用户)登录MySQL,输入以下命令: sudo mysql -u root -p 输入密码后进入MySQL命令行界面。 2. 创建用户...

Ubuntu下MySQL权限设置操作指南

1. 登录MySQL服务器

以root用户(或具有足够权限的用户)登录MySQL,输入以下命令:

sudo mysql -u root -p

输入密码后进入MySQL命令行界面。

2. 创建用户

使用CREATE USER语句创建用户,语法为:

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    
  • 主机名说明
    • localhost:仅允许本地连接(默认);
    • %:允许从任何IP地址连接(不安全,仅用于测试);
    • 特定IP(如192.168.1.100):限制仅该IP可连接。
      示例(创建本地用户dev_user,密码DevPass123):
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'DevPass123';
    

3. 授予权限

使用GRANT语句为用户分配权限,权限范围可分为全局、数据库、表、列四级:

  • 全局权限(对所有数据库生效,谨慎使用):
    GRANT ALL PRIVILEGES ON *.* TO 'dev_user'@'localhost';
        
    
  • 数据库级权限(对特定数据库的所有表生效):
    GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'dev_user'@'localhost';
        
    
  • 表级权限(对特定数据库的特定表生效):
    GRANT DELETE ON mydb.users TO 'dev_user'@'localhost';
        
    
  • GRANT OPTION(允许用户将自己拥有的权限授予其他用户,仅管理员需使用):
    GRANT SELECT, INSERT ON mydb.* TO 'dev_user'@'localhost' WITH GRANT OPTION;
        
    

执行GRANT后,无需手动刷新权限(MySQL 8.0+会自动同步)。

4. 查看用户权限

使用SHOW GRANTS语句查看用户的权限详情:

SHOW GRANTS FOR 'dev_user'@'localhost';
    

示例输出:

+--------------------------------------------------------------+
| Grants for dev_user@localhost                                |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev_user`@`localhost`                 |
| GRANT SELECT, INSERT, UPDATE ON `mydb`.* TO `dev_user`@`localhost` |
+--------------------------------------------------------------+

5. 撤销权限

使用REVOKE语句撤销用户的特定权限,语法与GRANT相反:

  • 撤销数据库级权限
    REVOKE SELECT, INSERT ON mydb.* FROM 'dev_user'@'localhost';
        
    
  • 撤销全局权限(需管理员权限):
    REVOKE ALL PRIVILEGES ON *.* FROM 'dev_user'@'localhost';
        
    

撤销后需执行FLUSH PRIVILEGES; 使更改生效(MySQL 8.0+可省略,但显式执行更安全)。

6. 修改用户密码

  • 修改当前用户密码
    ALTER USER USER() IDENTIFIED BY 'NewPassword123';
        
    
  • 修改其他用户密码(需管理员权限):
    ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'NewDevPass456';
        
    
  • MySQL 5.7.6+推荐方式(更安全):
    SET PASSWORD FOR 'dev_user'@'localhost' = PASSWORD('NewDevPass456');
        
    

7. 删除用户

使用DROP USER语句彻底删除用户:

DROP USER 'dev_user'@'localhost';
    

删除前需确保该用户无活跃连接,否则可能导致操作失败。

8. 远程访问配置(可选)

若需允许用户从远程主机连接,需完成以下步骤:

  • 修改MySQL配置文件
    编辑/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address行,将其值从127.0.0.1改为0.0.0.0(允许所有IP访问)或特定IP(如192.168.1.100):
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
    修改后保存并退出(Ctrl+OEnterCtrl+X)。
  • 重启MySQL服务
    sudo systemctl restart mysql
    
  • 配置防火墙(若启用ufw):
    允许MySQL默认端口(3306)的TCP访问:
    sudo ufw allow 3306/tcp
    
  • 创建允许远程连接的用户(如remote_user,密码RemotePass789):
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemotePass789';
        
    GRANT ALL PRIVILEGES ON mydb.* TO 'remote_user'@'%';
        
    FLUSH PRIVILEGES;
        
    
  • 测试远程连接(从远程主机执行):
    mysql -h 服务器IP -u remote_user -p
    

安全注意事项

  • 遵循最小权限原则:仅授予用户完成工作所需的最低权限(如开发人员仅需SELECTINSERT权限,无需DROP权限)。
  • 限制连接来源:避免使用%作为主机名,优先指定具体IP或localhost
  • 定期审查权限:使用SHOW GRANTS检查用户权限,及时撤销不必要的权限。
  • 使用强密码:密码需包含大小写字母、数字和特殊字符,长度不少于8位。
  • 避免远程开放:仅在必要时开启远程访问,并通过防火墙限制访问IP。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MySQL权限设置怎样操作
本文地址: https://pptw.com/jishu/715930.html
如何在Ubuntu上搭建MySQL集群 Ubuntu MySQL版本兼容性问题如何处理

游客 回复需填写必要信息