Ubuntu MySQL权限设置怎样操作
导读: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+O
→Enter
→Ctrl+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
安全注意事项
- 遵循最小权限原则:仅授予用户完成工作所需的最低权限(如开发人员仅需
SELECT
、INSERT
权限,无需DROP
权限)。 - 限制连接来源:避免使用
%
作为主机名,优先指定具体IP或localhost
。 - 定期审查权限:使用
SHOW GRANTS
检查用户权限,及时撤销不必要的权限。 - 使用强密码:密码需包含大小写字母、数字和特殊字符,长度不少于8位。
- 避免远程开放:仅在必要时开启远程访问,并通过防火墙限制访问IP。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MySQL权限设置怎样操作
本文地址: https://pptw.com/jishu/715930.html