Ubuntu下MySQL权限设置操作指南
以root用户(或具有足够权限的用户)登录MySQL,输入以下命令:
sudo mysql -u root -p
输入密码后进入MySQL命令行界面。
使用CREATE USER语句创建用户,语法为:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
localhost:仅允许本地连接(默认);%:允许从任何IP地址连接(不安全,仅用于测试);192.168.1.100):限制仅该IP可连接。dev_user,密码DevPass123):CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'DevPass123';
使用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+会自动同步)。
使用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` |
+--------------------------------------------------------------+
使用REVOKE语句撤销用户的特定权限,语法与GRANT相反:
REVOKE SELECT, INSERT ON mydb.* FROM 'dev_user'@'localhost';
REVOKE ALL PRIVILEGES ON *.* FROM 'dev_user'@'localhost';
撤销后需执行FLUSH PRIVILEGES;使更改生效(MySQL 8.0+可省略,但显式执行更安全)。
ALTER USER USER() IDENTIFIED BY 'NewPassword123';
ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'NewDevPass456';
SET PASSWORD FOR 'dev_user'@'localhost' = PASSWORD('NewDevPass456');
使用DROP USER语句彻底删除用户:
DROP USER 'dev_user'@'localhost';
删除前需确保该用户无活跃连接,否则可能导致操作失败。
若需允许用户从远程主机连接,需完成以下步骤:
/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)。sudo systemctl restart mysql
ufw):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检查用户权限,及时撤销不必要的权限。