文章目录
忘记密码
-1. vim /etc/my.cnf
在[mysqld]配置段下添加:
skip-grant-tables
保存并退出。
-2:重启MySQL服务
systemctl restart mysqld
-3:免密码登录MySQL
mysql -u root
-4:选择mysql数据库并清空密码
use
update user set authentication_string='' where user='root';
flush privileges;
-5:恢复配置文件并重启服务
vim /etc/my.cnf
删除之前添加的skip-grant-tables行,保存退出。
systemctl restart mysqld
-6:使用空密码登录并设置新密码 mysql -u root -p
提示输入密码时直接回车(密码为空)。
ALTER
flush privileges;
修改端口号

修改大小写不敏感
第一步:备份数据(至关重要)
如果您的MySQL服务器中已有重要数据,这是必须执行的第一步,以防数据丢失。
使用 mysqldump 工具备份所有数据库
mysqldump -u root -p --all-databases > /path/to/backup/all_databases_backup.sql
请将 /path/to/backup/替换为您希望存储备份文件的实际路径。
第二步:修改配置文件
使用文本编辑器(如 vim)打开 MySQL 的主配置文件 my.cnf,该文件通常位于 /etc/my.cnf或
sudo vim /etc/my.cnf
在 [mysqld]配置节下添加 lower_case_table_names参数:
lower_case_table_names=1
参数解释:
0: 区分大小写(Linux 系统默认)。
1: 不区分大小写(将表名转换为小写存储和比较)。
2: 混合大小写(按指定格式存储,但比较时不区分)。
保存并关闭文件
第三步:重新初始化数据库系统
由于MySQL 8的限制,仅修改配置后重启服务无法使该参数生效,必须重新初始化数据目录
停止 MySQL 服务
sudo systemctl stop mysqld
删除现有数据目录
默认的数据目录通常是 /var/lib/mysql。此操作会永久删除所有数据库和表,因此第一步的备份至关重要。
sudo rm -rf /var/lib/mysql
重新创建空的数据目录并设置权限
shell
sudo mkdir /var/lib/mysql`
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql
重新初始化 MySQL 系统
此命令会为 root 用户生成一个新的临时密码。
sudo mysqld --initialize --user=mysql --lower_case_table_names=1
在某些版本中,也可以使用 --initialize-insecure选项,这样 root 密码将为空,但安全性较低。
启动 MySQL 服务
sudo systemctl start mysqld
第四步:验证配置
重新启动服务后,登录 MySQL 并检查参数是否已生效。
获取临时密码(如果使用了 --initialize)
sudo grep 'temporary password' /var/log/mysqld.log
登录 MySQL 并修改 root 密码
mysql -u root -p
输入查到的临时密码后,在 MySQL 提示符下执行:
shell
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
验证 lower_case_table_names的值
SHOW VARIABLES LIKE 'lower_case_table_names';
如果输出结果中 Value为 1,则表示配置成功
。
🚀 第五步:恢复数据(如果之前有备份)
现在,您可以将备份的数据重新导入到新的数据库中。
mysql -u root -p < /path/to/backup/all_databases_backup.sql
远程访问
修改密码规则
有时候用navicat连接出现
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
所以需要修改密码规则。
vim /etc/my.cnf

shell
bind-address = 0.0.0.0
mysql_native_password=ON
root@bogon saidiwendao\]# systemctl stop mysqld \[root@bogon saidiwendao\]# systemctl start mysqld
给用户授权权限
CREATE USER 'user1'@'%' IDENTIFIED BY 'XXXX';
GRANT ALL PRIVILEGES ON 数据库A.* TO 'user1'@'%';
放开全部 数据库A改成: *
flush privileges;
给用户1 数据库A的权限
查看用户的所有权限
SHOW GRANTS FOR 'user1'@'%';
如果您只是想移除用户的权限,但保留其账户(用户仍能连接数据库,只是没有操作权限),可以使用 REVOKE命令。
REVOKE ALL PRIVILEGES ON 数据库A.* FROM 'user1'@'%';撤销全局授权选项(可选):如果您在授权时使用了 WITH GRANT OPTION(虽然您的命令中没有),还需要额外撤销其授予权限的能力
REVOKE GRANT OPTION ON . FROM 'user1'@'%';
您可以通过以下命令检查权限是否已成功撤销。
SHOW GRANTS FOR 'user1'@'%';
直接删除用户
DROP USER '用户1'@'%';
FLUSH PRIVILEGES;
本文介绍了MySQL数据库的常见管理操作:
1)忘记密码时的重置方法,通过修改配置文件实现免密登录并重置root密码;
2)修改MySQL服务端口号的步骤;
3)设置大小写不敏感的参数配置及注意事项,包含数据备份和重新初始化数据库的完整流程;
4)配置远程访问权限的方法,包括修改密码规则、用户授权与权限管理等。这些操作涵盖了MySQL日常管理中的关键场景,特别强调了数据安全的重要性,在进行任何修改前都应先备份数据。
大功告成!