MySQL常遇到的问题
msi启动报错:error code is 2503

解决方法:
如果报错安装包受损,官网重新下载安装包后重新使用下图方法启动msi。

压缩包安装MySQL Community Server,没有MySQL快捷方式
使用msi进行安装MySQL的时候会自己创建一个如图的快捷方式
MySQL x.x Command Line Client
,单击直接输入密码即可进入mysql的命令行,使用压缩包进行安装的话会没有快捷方式,可以通过手动创建来解决

解决方法如下图所示:

net start mysql 报错:net 不是内部或外部命令
原因:
环境变量问题
解决方法:
打开环境变量,在path路径下添加C:\Windows\System32即可
MySQL5.6 版本,net start mysql 启动服务报错
1 | MySQL 服务正在启动 ... |
解决方法:
1. 不要创建my.ini文件,直接在my-default.ini文件中新增以下配置:
basedir = D:\mysql-5.6.10-winx64 (改为你自己的安装路径)
datadir = D:\mysql-5.6.10-winx64\data(改为你自己的安装路径)
port = 3306
2. 移除mysql服务
mysqld -remove
3. 安装mysql服务
mysqld.exe -install
4. 启动mysql服务
net start mysql
项目和idea连接MySQL报密码错误,可是命令行登录MySQL显示密码正确
如图所示:


原因之一:禅道MySQL服务和MySQL服务冲突
解决办法:
方案一:服务列表中停止禅道服务
方案二:在禅道的服务窗口中配置 3306 以外的端口号

项目和idea连接MySQL报文件名、目录名或卷标语法不正确
如图所示:

解决办法:
如上图中用户名后面出现了两个问号,足以说明是用户名乱码导致,所以需要更改用户文件夹下面的用户名文件夹名字,修改步骤如下:
- 打开系统设置面板,以Windows11为例,在账户中的其他用户中添加一个管理员账户,例如Administrator(新增一个管理员账户是为了通过这个有管理权限的账户去更改原来的用户名,更改成功之后即可删掉Administrator用户);
- 打开控制面板,找到“控制面板\用户帐户\用户帐户”,然后将刚才新增的账户Administrator的账户类型改为管理员用户;
- 重启电脑,以新用户Administrator进行登录;
- 打开文件资源管理器,直接修改“C:\Users\”路径下的用户名称,例如”大帅哥” -> “handsome”,如果显示有文件正在使用中,那么自行百度解决后再进行下一步。切记切记切记!
- 打开注册表,在如下路径中找到需要修改的用户名:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList<要修改的用户对应的sid>

找到如图中自己的用户名所在的ProfileImagePath,右键进行更改为想要修改的英文用户名(不含表情等特殊符号) - 更改成功之后注销Administrator用户的登录,然后以新改的英文用户名登录
- 修改环境变量,因为环境变量中可能包含之前用户名的环境变量,所以需要将旧用户名与新用户名进行替换
- [可选]为了防止快捷方式打不开,创建一个软连接,可以防止一切路径问题。
1
mklink /d "C:\Users\大帅哥" "C:\Users\handsome"
- [强迫症可选]下载Registry Workshop注册表管理程序,使用它来批量替换包含旧用户名的注册表
mysqld: [ERROR] Found option without preceding group in config file D:\MySQL\MySQL Server 8.0\my.ini at line 1.
原因:my.ini 文件的编码问题
解决办法:
方案一:文件另存为,更改文件编码为ANSI
方案二:更改文件扩展名为.nasi
mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自己停止 || 服务无法启动,没有报告任何问题

解决方法:首先data文件夹下的xxx.err文件,看文件末尾的最新日志
1 | # 例如 |
找不到VCRUNTIME140_1.dll

解决方法:下载官方驱动
SQLYog 连接本地 mysql 实例报插件错误(错误号码:2058 Plugin caching_sha2_password_authentication could net be loaded)
1 | ## 解决方案 |
msi程序一直卡在start server的步骤 | 压缩包安装启动不了服务
1 | ## 报错信息: |
ERROR 1449 (HY000): The user specified as a definer (‘mysql.infoschema’@‘localhost’) does not exist
1 |
|
Linux 中 MySQL 忘记密码
修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# vim /etc/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端默认编码(数据库级别)
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
# --- 添加此行到此处 ---
skip-grant-tables重启MySQL服务
1
systemctl restart mysql
免密码登录 root 用户(输入密码时直接回车即可)
1 | mysql -u root -p |
- 重置密码
1
2
3
4
5mysql> use mysql
mysql> select host, user, authentication_string, plugin from user;
# 注意:先执行flush privileges;然后会alter成功,要不然会alter失败
mysql> alter user 'root'@'localhost'IDENTIFIED BY 'newpassword'; - 修改密码安全级别
1
2set global validate_password.policy=0;
set global validate_password.length=1; - 把/etc/my.cnf 文件末尾的 skip-grant-tables 去掉,重启MySQL服务,修改完成。
sqlyog 链接 MySQL 数据库出现 2058 错误代码
多版本安装之后怎么访问不同版本 MySQL
1 | # -h: 指定主机 -P:指定端口 -u:指定用户名 -p:指定密码 |
MySQL8.x 强密码怎么取消
1 | SHOW VARIABLES LIKE 'validate_password%'; |
MySQL5.x 系列msi
安装出现无响应问题
问题剖析:通常是由于3306端口号被占用导致的
解决办法:
1、可以通过netstat -ano
查看端口号是否被占用
2、杀掉进程:
1 | # 按进程 ID (PID) 杀死进程 |
MySQL Connector Net 卸载不了
MySQL管理用户权限
1 | # 创建用户 |
多平台重装MySQL,数据备份的需求
1 | # 备份数据库 |
MySQL远程访问问题
1 | 1.进入mysql: |
MySQL取消大小写敏感问题
1 | 1.备份数据:在进行任何操作之前,请务必备份/var/ib/mysql目录中的数据,以防止数据丢失。 |
MySQL启动服务提示权限不够问题
1 | chown -R mysql:mysql /var/lib/mysql/ |
MySQL使用mysqld --initialize
忘记加--console
解决方法
1 | # 查看安装MySQL的初始化密码 |
MySQL5.6.+版本
ERROR 1819 (HY000):
Your password does not satisfy the current policy requirements.
1 | # 数据库中设置不了弱类型密码,会报以上错误 |
ERROR 1820 (HY000):
You must reset your password using ALTER USER statement before executing this statement.
原因:MySQL版本5.6.6版本起,添加了password_expired(密码失效)功能,但是它的默认值是”N”,可以使用ALTER USER语句来修改这个值。
输入如下三个命令。
1 | 修改密码: |
MySQL 开启慢日志
1 | [mysqld] |
win重装MySQL
残留清理
卸载MySQL
设置面板 > 应用 > 卸载MySQL
删除注册表
1 | win + R 打开注册表 |
停止并删除本地服务
1 | # 查询本地安装的MySQL服务的名字 |
删除残留文件夹
1 | # 默认安装位置 |
MSI安装
安装地址
https://dev.mysql.com/downloads/installer/
双击msi文件进行安装
如果遇到最后一步一直卡在start server那一步骤,前往常见问题查看解决方法。
.zip安装
安装地址
MySQL Community Server –Archived Versions: https://downloads.mysql.com/archives/community/
5.6 及以下
MySQL5.6 及以下版本的压缩包中是有 data 文件夹的,所以无需进行初始化,甚至不需要写配置文件,直接用默认配置文件:my-default.ini即可
1 | # 打开cmd |
添加配置文件
在解压后的文件中添加
my.ini
配置文件,并将其中的basedir
和datadir
分别修改为自己的相应文件夹目录
v5.7
1 | [mysqld] |
v8.x详细
1 | [mysql] |
v8.x简易
1 | [mysqld] |
v8.4简易
1 | [mysqld] |
初始化数据库
以管理员身份运行cmd,并切换目录至mysql主目录的bin文件夹下,输入如下命令:
1 | 初始化mysql数据库,自动创建data文件夹,可在控制台打印的日志信息查看到初始化的数据库密码 |
注册mysql服务并启动
使用下边的命令可以注册mysql服务,需要安装多个版本mysql时可以使用这个命令来区分不同版本数据库对应的服务。
1 | mysqld --install 服务名称 |
登录mysql数据库
1 | 使用如下命令进行登录 |
修改密码
1 | # 进入MySQL命令行 |
Linux重装MySQL
CentOS
卸载
采用yum安装mysql后,如果想要完全卸载mysql,可以采用如下方式:
查找并删除mysql安装内容
1 | # 是用rpm命令查询mysql安装包 |
删除文件残留
1 | find / -name mysql |
重装
在线安装
安装包网址:https://dev.mysql.com/downloads/repo/yum/
下载wget命令
1 | yum install -y wget |
下载MySQL安装包
1 | # 根据上面的安装包网址中的链接,根据需要选择 |
安装MySQL安装包
1 | rpm -ivh mysql57-community-release-el7-8.noarch.rpm |
安装MySQL服务
1 | # 1. 进入 /etc/yum.repos.d 目录 |
启动MySQL服务
1 | systemctl start mysqld.service |
查看数据库初始密码
1 | grep 'A temporary password' /var/log/mysqld.log |
修改密码
老一套
远程访问解决
可以通过关闭防火墙以及增加防火墙开放端口 + 老一套
内网环境 zip 安装
可能遇到的问题
安装 MySQL57 时提示系统中缺少 ncurses 库
科普:
libncurses.so.5 是一个终端控制库的共享文件,MySQL 5.7 客户端依赖它来运行。如果系统中缺少该文件,可以通过安装兼容包、创建符号链接或升级 MySQL 版本来解决问题。推荐优先尝试安装兼容包或升级到 MySQL 8.0。原因:
某些较新的 Linux 发行版(如 CentOS 8 或 Ubuntu 20.04 及以上版本)可能默认不安装 ncurses 的旧版本(如 ncurses5),而是使用更新的版本(如 ncurses6)。
MySQL 5.7 客户端可能硬编码依赖 libncurses.so.5,而无法直接使用 libncurses.so.6。解决办法:
1
2
3
4
5
6
7
8# 系统中已装 ncurses6,可以创建软连接
sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /lib/x86_64-linux-gnu/libncurses.so.5
# 系统中未装 ncurses
## Ubuntu
sudo apt-get install libncurses5
## CentOS
sudo yum install ncurses-libs
初始化 MySQL57 时提示系统缺少 libaio 库
- 报错信息:
1
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
- 解决方法:
1
2
3
4
5
6
7
8
9
10
11# Ubuntu
sudo apt install libaio1
# CentOS
sudo yum install libaio
# 如果 Ubuntu 提示如下内容,需要更换源
apt-get install libaio1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libaio1
[参考链接](https://blog.csdn.net/NowJzy/article/details/142459713)
- 报错信息:
编辑配置文件
1 | # 下载安装包 |
初始化MySQL(二选一)
1 | ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
设置开机自启动
1 | # 新建文件并编辑 |
Ubuntu
1 | ### 一般不用这些 ### |
MAC重装MySQL
DMG方式安装
卸载MySQL
打开系统设置,进入侧边栏最底部的MySQL
一栏
删除安装残余
1 | sudo rm /usr/local/mysql |
重新安装
完成后查看系统设置,进入侧边栏最底部的MySQL
一栏,查看是否正常启动,已经启动则成功安装
配置环境变量
1 | # 查看环境变量是否写入 |
Compressed TAR Archive压缩包方式安装
官网地址:https://dev.mysql.com/downloads/mysql/
删除MySQL
压缩包以及解压后的文件
1 | rm -rf ./file/* |
删除安装残余
1 | sudo rm /usr/local/mysql |
解压
将其解压到/usr/local/下,并重命名为mysql (即:最后的完整目录应该是/usr/local/mysql)
调整目录权限
1 | cd /usr/local |
初始化数据库
1 | cd /usr/local/mysql/bin |
2018-12-01T14:42:12.002186Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 4229
2018-12-01T14:42:12.004783Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
2018-12-01T14:42:12.006285Z 0 [Warning] [MY-010122] [Server] One can only use the –user switch if running as root
2018-12-01T14:42:14.187443Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iM46X&03qRc_
2018-12-01T14:42:15.427614Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed
注意加粗的部分,初始化过程中,会生成一个随机的root初始密码,记好这个,后面会用到。
如果没记下这个密码,导致后面无法登录,可以rm -rf /usr/local/mysql/data/* 把所有文件干掉,再来一把。
启动mysql
1 | cd /usr/local/mysql/support-file |
Starting MySQL
. SUCCESS!
看到这个SUCCESS就表示启动成功了。
1 | # 在启动MySQL时报:[ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root! |
修改密码
1 | cd /usr/local/mysql/bin |
初始密码实在太难记了,可以用上面的命令先改一下
这一步做完后,应该就可以用
登录验证
1 | mysql -u root -p |
不过8.0及以上版本貌似安全策略做了调整,用navicat之类的工具连接,会出现:Client does not support authentication protocol requested by server; consider upgrading MySQL client之类的错误
解决方法:
1 | use mysql |
配置全局环境变量
1 | # 查看环境变量是否写入 |
设置开机自启动
1 | # 1. 创建启动代理 plist 文件(保存文件并退出编辑器(在 nano 中,按 ctrl+x,然后按 y,然后 enter) |
Windows忘记MySQL密码
如果是忘记密码,那么需要按照顺序全部执行;如果仅仅是修改密码,只需执行第四步即可!
win + R
运行services.msc
找到
MySQL
或者MySQL80
服务并关闭以管理员身份运行
cmd
,进入MySQL安装目录1
2
3
4# 默认安装位置
C:\Program Files\MySQL\MySQL Server [your_version]\bin
# 正确配置过环境变量的前提下,找不到安装目录可以使用以下命令进行查看
where mysqld.exe跳过权限表启动
MySQL
1
2# 在 bin 目录下执行命令,跳过身份验证权限,运行以下命令之后,此时命令提示符处于mysqld启动状态
mysqld --skip-grant-tables修改密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 新打开一个 cmd 连接到 MySQL
# 进入MySQL命令行
mysql -u root
# 切换数据库
use mysql;
# 注意版本要求:
# 小于等于 V5.7
update mysql.user set authentication_string=password('123456') where User='root';
# 大于 V5.7
alter user root@localhost identified by '新密码' password expire never; (推荐使用!设置密码永不过期)
update mysql.user set password=password('123456') where User='root';
或者
alter user root@localhost identified by '新密码';
或者
set password for root@localhost = '新密码';刷新权限
1
flush privileges;
验证是否成功
MAC忘记MySQL密码
如果是忘记密码,那么需要按照顺序全部执行;如果仅仅是修改密码,只需执行第五步即可!
关闭
MySQL
服务1 使用系统设置页的 MySQL 面板
2 使用命令
1
sudo /usr/local/mysql/support-files/mysql.server stop
切换到管理员模式
1
sudo su
关闭密码验证
1
2# 跳过权限表,执行下面的语句后,直接后台启动运行,可能不需要新开终端
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &进入
MySQL
1
mysql -u root
刷新权限
1
flush privileges;
修改密码
1
2
3
4
5
6
7
8
9
10
11
12# 注意版本要求:
# 小于等于 V5.7
update mysql.user set authentication_string=password('123456') where User='root';
# 大于 V5.7
alter user root@localhost identified by '新密码' password expire never; (推荐使用!设置密码永不过期)
update mysql.user set password=password('123456') where User='root';
或者
alter user root@localhost identified by '新密码';
或者
set password for root@localhost = '新密码';刷新权限
1
flush privileges;
开启
MySQL
服务同第一步⬆️,第一步用什么方法,这一步就用什么
1 使用系统设置页的 MySQL 面板
2 使用命令
1
sudo /usr/local/mysql/support-files/mysql.server start
MAC启动MySQL服务报错
报错
ERROR!The server quit without update PID file(/opt/homebrew/var/mysql/username.local.pid)
原因
安装MySQL时,之前的配置为删除干净,或者未卸载干净导致系统进程中残留了MySQL相关服务的进程!
解决方案
1 | sudo cat /opt/homebrew/var/mysql/username.local.err |
MAC启动MySQL的方式
通过homebrew
安装的MySQL
1 | brew services start mysql |
通过DMG
安装的MySQL
打开设置面板最下方的 MySQL panel 进行启动
通过Compressed TAR Archive
压缩包安装
1 | # 进入MySQL的安装目录 |