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

大功告成!

相关推荐
一招定胜负4 小时前
navicat连接数据库&mysql常见语句及操作
数据库·mysql
阿海5744 小时前
备份mysql数据的shell脚本
mysql
sayyy5 小时前
【Docker】 安装 mysql8.0
mysql·docker
CodeAmaz6 小时前
MySQL索引,以及它们的好处和坏处
数据库·mysql·面试题·索引
四谎真好看6 小时前
MySQL学习笔记(基础篇1)
笔记·学习·mysql·学习笔记
小毅&Nora7 小时前
【后端】【JAVA】MySQL面试题深度解析:50道高频真题全解
java·mysql·面试
帝吃藕和9 小时前
MySQL 知识点复习- 2.创建数据表及查询
数据库·mysql
ruleslol9 小时前
mysql-使用 performance_schema 进行性能监控
mysql
半夏知半秋10 小时前
mysql相关知识点学习整理
服务器·开发语言·数据库·sql·学习·mysql