ubuntu

ubuntu下mysql权限设置指南

小樊
49
2025-10-18 08:53:11
栏目: 云计算

Ubuntu下MySQL权限设置指南

一、前置准备:安装MySQL与基础安全配置

在设置权限前,需先完成MySQL的安装及初始安全加固:

  1. 安装MySQL:更新软件包列表并安装MySQL服务器及客户端
    sudo apt update
    sudo apt install mysql-server mysql-client
    
  2. 运行安全脚本:执行mysql_secure_installation,完成以下关键操作:
    • 设置/更改root密码;
    • 移除匿名用户;
    • 禁止root远程登录;
    • 删除测试数据库;
    • 重新加载权限表。

二、登录MySQL

使用root用户登录MySQL命令行(需输入root密码):

sudo mysql -u root -p

三、创建用户(可选但推荐)

为避免直接使用root账户,建议创建专用用户。语法如下:

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

四、分配权限

1. 授予权限

使用GRANT语句为用户分配权限,常见场景如下:

2. 刷新权限

授予权限后,需执行以下命令使变更立即生效:

FLUSH PRIVILEGES;

五、查看与撤销权限

1. 查看用户权限

2. 撤销权限

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

REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';

示例:撤销dev_usermydb.users表的DELETE权限:

REVOKE DELETE ON mydb.users FROM 'dev_user'@'localhost';
FLUSH PRIVILEGES;

六、远程访问配置(可选)

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

  1. 修改MySQL配置文件
    编辑/etc/mysql/mysql.conf.d/mysqld.cnf,注释bind-address行(允许所有IP连接):
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    # 找到并注释:bind-address = 127.0.0.1
    
  2. 重启MySQL服务
    sudo systemctl restart mysql
    
  3. 开放防火墙端口
    允许3306端口(MySQL默认端口)通过防火墙:
    sudo ufw allow 3306
    
  4. 为用户分配远程权限
    host改为%(或指定IP),并授予权限:
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemotePass123';
    GRANT ALL PRIVILEGES ON mydb.* TO 'remote_user'@'%';
    FLUSH PRIVILEGES;
    

七、权限管理最佳实践

  1. 最小权限原则:仅授予用户完成任务所需的最低权限(如应用用户仅需SELECTINSERT,无需DROP);
  2. 定期审查权限:通过SHOW GRANTS检查用户权限,及时撤销不必要的权限;
  3. 避免使用root:日常操作使用专用用户,root仅用于管理任务;
  4. 强密码策略:设置复杂密码(包含大小写字母、数字、特殊字符),定期更换;
  5. 限制远程访问:尽量使用localhost或特定IP,避免%开放所有主机。

完成以上步骤后,即可完成Ubuntu下MySQL的权限设置。根据实际需求调整用户权限,确保数据库安全。

0
看了该问题的人还看了