笔者我在很久以前部署了一个JSP管理系统时安装了MySQL 5.7.26,最近这段时间打开使用时,忽然发现总报各种错误,基本是root账户的password的问题,可能是时间太久笔者忘了密码,或者MySQL自身权限问题。基于此,特汇总MySQL最容易出现的安装、启动、登入和Navicat Premium连接MySQL的问题。
进入MySQL 官网此处下载社区版,笔者使用流行的5.7版本 mysql-installer-community-5.7.26.0.msi,当然目前已经到8.0.20时代了,不过这并不影响一些基本操作,谁让我有怀旧情结呢。
MySQL安装过程简单,贴几张关键的步骤图(p.s.其实是时间久远没图了把5.7.20和5.7.26的混贴)便不再赘述:
1、必须安装微软的VBVC运行库作为MySQL的依赖。
2、添加角色或改root时密码必须不能忘呀
3、High Availability 一般选用标准类型
Type and Networking 的配置类型选用 Development computer
这里附加一下我自制的过程动图:
重点讲下安装后的系统变量配置、成功验证、字符集编码更改等。
控制面板>系统高级设置>
1、配置 Path 变量
变量值: C:\Program Files\MySQL\MySQL Server 5.7\bin\;
(MySQL的安装目录bin)
2、验证配置成功
在管理员模式下的DOS命令行输入
net start mysql57
(启动)
或 net stop mysql57
(关闭)
或 mysql -uroot -p
(登录)
3、解决系统拒绝访问
编辑安装目录下的 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
配置文件,
找到 [mysqld]
下面,添加 skip-grant-tables
,重启mysql服务即可。
【注】my.ini配置文件并不在Program Files
路径下,而是在隐藏的ProgramData
路径下。同时这种操作解决不彻底,文后会介绍其他DOS命令办法。
4、查询并修改mysql所使用的编码为utf8
管理员模式下的DOS命令行
mysql> status
mysql> show variables like 'character%';(查询字符集编码)
mysql> set character_set_client=utf8; (修改字符集编码)
5、查询数据库是否已经导入
mysql> show databases; (查询data目录下存放的所有数据库)
mysql> use db_librarySys; (进入当前一个数据库)
mysql> select * from tb_booktype; (查询里面对应的数据表)
管理员DOS命令
1、进入MySQL的bin目录,cd C:\Program Files\MySQL\MySQL Server 5.7\bin
2、测试MySQL服务安装是否成功 mysqld -install
然后 net start mysql
3、初始化服务 mysqld --initialize
后再 net start mysql
问题解决
管理员DOS命令
1、进入MySQL的bin目录,cd C:\Program Files\MySQL\MySQL Server 5.7\bin
2、停止服务 net stop mysql
3、通过MySQL安全模式进入配置my.ini跳过权限检查机制
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"
(注:bin 目录和 my.ini 文件路径可能会有所不同,因人而异)
4、新开管理员命令窗口,mysql -uroot -p
重登root账户,此时MySQL已默认会跳过检查输空密码即可。
【注】到这步,使用 Navicat Premium 连接 MySQL 已可以连接成功,但只要你关闭DOS命令窗口后,还是会失效,非永久性的。
5、修改root用户密码为’root’
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
或者(5.7版本后)
mysql>UPDATE USER SET authentication_string=password('123456') WHERE user='root';
当然首先要先选中系统数据库:USE mysql;
来执行密码修改,不要忘咯哈哈。
最后刷新权限FLUSH PRIVILIGES
保存退出quit
6、大功告成输入密码测试连接成功。不过之后你会发现,需要保持DOS窗口才会生效。
笔者在欣喜解决mysql的root密码无法通过的问题后,隔天发现重启后 Navicat Premium 连接MySQL就失败了,讲MySQL服务无法启动,试过net start mysql
,也使用Windows+R
输services.msc
进服务管理启动,结果:
首先DOS命令管理员模式 cd 进入 MySQL bin 目录
1、移除 mysql 服务 mysqld --remove mysql
2、清空 mysql 安装下 data 目录
(若提示正被占用无法删除可关机重启清空;此步会删除原有用户数据库,建议备份)
3、接下来注册 mysql 服务名可自己起,并初始化配置 my.ini,注册新服务
mysqld --initialize-insecure --user=mysql
mysqld --install mysql --defaults-file=C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
mysqld.exe -install
4、net start mysql
启动成功
5、查看 MySQL data 目录 .err 日志文件,笔者此处的日志确定初始化的原始密码为空,从而 mysql -uroot -p
不输密码直接回车,
大功告成,进 MySQL,开森(/≧▽≦)/
( 此为永久生效的进入MySQL连接,但安全起见,日后还是要更改新密码或设备用角色)
T2020.5.29 23:20 更新以下问题
问题表现:
1、net start mysql
无法启动服务,也不报错。
2、services.msc
服务管理器中,启动 mysql 服务报错:mysql 启动后自动停止,和上个问题的表现一样。
3、连接访问被拒,命令行 mysql -uroot -p
密码正确,即使是刷回初始正确的空密码也无法通过。
问题解决:
经过排错,尝试命令行 mysql -uroot -p
输入 mysql 网络服务的密码反而能通过,连接数据库后,show databases;
反而只能看到以往老的数据库(以前自己做b/s网站时,使用的网络Web服务的数据库),本地数据库完全没有。这时,net start/stop mysql
自然不管用了,只有 net start/stop mysql57
管用。
其实查看会发现,网络数据库对应 MySQL57 网络服务,路径在 ProgramData,本地数据库对应 MySQL 本地服务,路径在 Program Files 。
所以,二者两个服务必须禁用掉一个,以防止端口挤占,造成无法连接的问题啊。
记录问题解决问题,作为一个ITer,写完这篇文字码字不易,若转载复制请注明出处,若帮到后来者点赞评论鼓励哟,晚安
BY MR.CUI T 2020.5.25 00:21