
Mysql在Linux系统中的运用用户管理从创建到授权MySQL 的用户体系由用户名 主机名共同定义例如rootlocalhost和root%是两个完全不同的用户。创建与删除用户-- 创建允许从任意主机连接的用户CREATEUSERapp_user%IDENTIFIEDBYStrongPass123!;-- 创建只允许本机连接的用户CREATEUSERlocal_userlocalhostIDENTIFIEDBYStrongPass123!;-- 删除用户DROPUSERapp_user%;授予权限GRANT语句用于分配权限ON子句决定了权限的作用范围。-- 授予所有数据库的所有权限谨慎使用GRANTALLPRIVILEGESON*.*TOapp_user%;-- 授予特定数据库的所有权限GRANTALLPRIVILEGESONmydb.*TOapp_user%;-- 授予特定表的只读权限GRANTSELECTONmydb.sensitive_tableTOapp_user%;-- 授予特定操作权限GRANTSELECT,INSERT,UPDATEONmydb.*TOapp_user%;查看与回收权限-- 查看当前用户权限SHOWGRANTS;-- 查看指定用户权限SHOWGRANTSFORapp_user%;-- 回收权限REVOKEDELETEONmydb.*FROMapp_user%;-- 刷新权限修改权限表后建议执行FLUSHPRIVILEGES;实战经验遵循最小权限原则为每个应用创建独立用户只授予其必需的权限并尽量将%替换为具体的 IP 地址。数据库操作从建库到查询登录后最常用的操作包括-- 查看所有数据库SHOWDATABASES;-- 创建并选择数据库CREATEDATABASEmydb;USEmydb;-- 创建表CREATETABLEusers(idINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-- 插入数据INSERTINTOusers(username)VALUES(alice),(bob);-- 查询数据SELECT*FROMusersWHEREusernamealice;-- 查看表结构DESCRIBEusers;忘记密码的解决方案Linux 系统当忘记 root 密码时可以通过跳过权限验证的方式进入数据库并重置密码。注意操作前请确保可以重启 MySQL 服务。停止 MySQL 服务sudosystemctl stop mysql# 或 sudo systemctl stop mariadb跳过权限表启动 MySQLsudomysqld_safe --skip-grant-tables部分系统可能需要用sudo mysqld --skip-grant-tables 无密码登录并修改密码新开一个终端直接登录mysql-uroot登录后执行以下 SQL 语句MySQL 5.7 与 8.0 的写法略有不同-- 刷新权限表让跳过权限的设置在内存中生效FLUSHPRIVILEGES;-- 修改 root 密码MySQL 8.0 推荐写法ALTERUSERrootlocalhostIDENTIFIEDBYYourNewPassword!;-- 如果是 MySQL 5.7 或更早版本可能需要用-- SET PASSWORD FOR rootlocalhost PASSWORD(YourNewPassword!);重启 MySQL 服务修改完成后退出 MySQL然后正常重启服务sudosystemctl restart mysql之后就可以用新密码登录了。日常修改密码知道旧密码时更推荐使用ALTER USER语句ALTERUSERrootlocalhostIDENTIFIEDBYNewPassword!;核心注意事项权限的host字段userlocalhost和user%是不同用户忘记密码时确保修改的是你实际用于登录的那个账号。配置文件位置MySQL 的主配置文件通常在/etc/my.cnf或/etc/mysql/my.cnf修改bind-address等参数后需重启服务。服务管理命令现代 Linux 系统通常使用systemctl管理服务但service命令在旧版系统中也依然可用。