MySQL是一个开源的关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)进行数据管理。作为 LAMP 技术栈(Linux + Apache + MySQL + PHP/Python)的核心组件,它具有以下特点:

sudo mysql # 适用于使用auth_socket认证的系统
# 标准密码验证登录(-u后必须空格)
mysql -u root -p # 输入root密码
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'SecurePass123!';
-- 创建数据库
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 授予app_db所有权限
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
-- 授予特定表权限
GRANT SELECT, INSERT ON app_db.user_table TO 'app_user'@'localhost';
| 权限 | 功能描述 | 风险等级 |
|---|---|---|
| CREATE | 创建新表/数据库 | ⚠️ 高 |
| DROP | 删除表或数据库 | ⚠️⚠️ 极高 |
| DELETE | 删除数据行 | ⚠️ 高 |
| INSERT | 插入新数据 | ⚠️ 中 |
| SELECT | 读取数据 | ⚠️ 低 |
| UPDATE | 修改现有数据 | ⚠️⚠️ 高 |
| GRANT OPTION | 授予他人权限 | ⚠️⚠️⚠️ 极高 |
-- 刷新权限(必须步骤)
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'app_user'@'localhost';
-- 退出会话
EXIT;
# 使用新用户登录
mysql -u app_user -p
# 尝试授权操作(应失败)
mysql> CREATE TABLE test.t1 (id INT);
-- ERROR 1142 (42000): CREATE command denied
# 验证允许的操作
mysql> USE app_db;
mysql> INSERT INTO user_table VALUES (1, 'demo');
-- Query OK, 1 row affected
-- 限制特定IP段访问(示例)
CREATE USER 'remote_user'@'192.168.1.%' IDENTIFIED BY 'NetworkPass!';
-- 设置密码复杂度要求
SET GLOBAL validate_password.policy = MEDIUM;
-- 定期修改密码
ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'New_Pass_2025!';
-- 移除危险权限
REVOKE DROP ON app_db.* FROM 'app_user'@'localhost';
# 查看用户登录记录
grep 'app_user' /var/log/mysql/mysql.log
# 检查权限变更
mysql> SELECT * FROM mysql.tables_priv WHERE User='app_user';

# 备份授权表
mysqldump -u root -p --databases mysql > mysql_grants_backup.sql
-- 步骤1:停止MySQL服务
sudo systemctl stop mysql
-- 步骤2:启动恢复模式
mysqld_safe --skip-grant-tables &
-- 步骤3:还原权限表
mysql -u root mysql < mysql_grants_backup.sql
-- 步骤4:刷新权限并重启
FLUSH PRIVILEGES;
sudo systemctl restart mysql
联系我们
customer@ffy.com
川公网安备51015602000993