mysql8安装后忘记密码,大小写不敏感修改,修改端口号,开启远程访问

文章目录

忘记密码

-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日常管理中的关键场景,特别强调了数据安全的重要性,在进行任何修改前都应先备份数据。

大功告成!

相关推荐
陌北v121 分钟前
为什么我从 MySQL 迁移到 PostgreSQL
数据库·mysql·postgresql
就叫飞六吧3 小时前
mysql表字段反查表名脚本-筛选法-查表技巧
数据库·mysql
1.14(java)4 小时前
MySQL数据库操作全攻略
java·数据库·mysql
jmxwzy4 小时前
MySQL
数据库·mysql
飞Link5 小时前
【MySQL】Linux(CentOS7)下安装MySQL8教程
linux·数据库·mysql
阿拉伯柠檬6 小时前
MySQL内置函数
linux·数据库·mysql·面试
计算机学姐7 小时前
基于SpringBoot的送货上门系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·tomcat
逻极7 小时前
FastAPI + SQLAlchemy 现代API项目实战:从零到上手的Python MySQL开发指南
python·mysql·fastapi·异步·sqlalchemy
qinyia7 小时前
WisdomSSH解决MySQL频繁重启问题
数据库·mysql
MoonBit月兔10 小时前
用 MoonBit 打造的 Luna UI:日本开发者 mizchi 的 Web Components 实践
前端·数据库·mysql·ui·缓存·wasm·moonbit