欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Win10上折腾MySQL8.0.15

程序员文章站 2024-03-21 16:49:52
...

原文 MySQL8.0.15在Win10上的折腾记,CSDN同步发布。

转载请注明出处,谢谢!


安装和配置MySQL

我在Windows 10上面使用 MySQL Instller 安装的MySQL8.0.15,安装完成后,启动MySQL遇到了不少问题,特此记录踩坑记。

只要你的网络稳定,按照默认安装整个安装过程还算比较顺利。安装过程中需要设置密码,我设置的账号和密码都是 root,所以下面的操作都是基于这个账号和密码进行的。

安装完成后,将mysql serverbin目录加入到系统的path变量中去,如图:
在Win10上折腾MySQL8.0.15
系统环境变量path中加入%MySQL_Home%\bin 即可。

加入成功之后,就可以使用mysql命令了。

题外话,我们在命令行使用的mysql命令其实是对应MySQL Server 8.0\bin\mysql.exe,可以使用where命令看一下其可执行文件的位置,如下:

$ where mysql
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe

同理, mysqld命令对应的是mysqld.exe可执行文件。

查看安装的mysql-server版本,可以执行下面的命令:

mysql --version

可以得到下面的输出,可以看出当前版本是 8.0.15:

C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe  Ver 8.0.15 for Win64 on x86_64 (MySQL Community Server - GPL)

我用的命令行终端工具是Git bash(安装Git客户端就自带该工具,个人觉得挺好用的,[嘿哈])。

用管理员身份运行,执行如下命令:

 mysqld --install

如果不用管理员身份运行终端的话,会报类似下面的错误:

Install/Remove of the Service Denied!

运行成功的话,可以看到如下提示:

Service successfully installed.

再次启动 mysql80,执行:

net start mysql80

注意:这里使用的是mysql80,这个是服务的名称 (安装时候我设置的服务名称) ,不是mysql,下面会讲解为什么这样做,如果你没有这个mysql80服务只需要启动mysql服务即可。

如果出现类似 “MYSQL 服务无法启动” 的提示,可以在Windows的任务管理器中找找是否已经启动了mysqld服务,可以手动关闭后再来启动。

如果始终启动失败,可以执行下面的命令:

mysqld --initialize

启动成功后,显示如下:

MySQL80 服务正在启动 .
MySQL80 服务已经启动成功。

可以使用下面命令查看是否成功启动mysql80服务,如下:

netstat -aon|findstr "3306"

看到如下提示表示启动成功,如下:

 TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       10344
 TCP    0.0.0.0:33060          0.0.0.0:0              LISTENING       10344
 TCP    [::]:3306              [::]:0                 LISTENING       10344
 TCP    [::]:33060             [::]:0                 LISTENING       10344
 TCP    [::1]:3306             [::1]:56962            TIME_WAIT       0

登录mysql80服务,执行如下命令:

$ mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

很不幸的是,登录失败(ERROR 1045)。

那我们就来解决这个问题,这个版本的MySQL和之前的8.0.x版本解决方案不同,网上找过很多解决方案有修改配置文件的,忙了半天还是没有搞定,最后在*上面找到方案,结合个人实践总结了一下,还烦请大家务必往下看。

解决MySQL登录受限

在看下面内容之前,务必完成之前的步骤,否则下面的内容对你来说没有太大价值。

新版本的MySQL加强了安全方便的考虑,所以使用新版本比较费劲,如果你不想折腾,可以安装MySQL的5.x版本。

Step-1:停止MySQL80服务

使用快捷键 win+R 输入 services.msc,打开如下视图并找到MySQL80服务:
在Win10上折腾MySQL8.0.15
停止MySQL80服务,或者在命令行执行net stop mysql80命令。

Step-2:另一种方式启动MySQL80服务

使用管理员身份运行终端1,并执行:

mysqld --console --skip-grant-tables --shared-memory

此时可以成功启动mysql80服务,但是在Windows的服务中是看不到的,不用理会。继续。

Step-3:启动另一个终端2

上述步骤启动完成后,再用管理员身份运行另一个Windows的终端2(CMD),记得一定要用系统自带的,Git Bash 在这步骤中不起作用。

Step-4:终端登录mysql

执行下面命令登录服务:

mysql -u root -p root

如下图可以登录成功,如下截图:
在Win10上折腾MySQL8.0.15
Step-5:置空密码

在上述命令行状态下,执行:

use mysql

update user set authentication_string='' where user='root';

Step-6:退出mysql服务

quit

Step-7:关闭mysqld启动的mysql80服务

需要关闭以 -console --skip-grant-tables --shared-memory 启动的mysql80服务,直接在终端1中ctrl+c即可。

Step-8:启动mysql80服务

使用Step-1步骤中的方式打开Windows的服务启动或者在终端1中执行net start mysql80启动mysql80服务。

Step-9: 无密码登录mysql

在步骤Step-5中已将密码置空,现在可以无密码状态登录mysql服务,输入登录命令:

mysql -u root -p 

登录成功后,修改密码(永远不过期的密码)执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpwd123' PASSWORD EXPIRE NEVER;

我把原来的密码修改为newpwd123,你可以根据自己的爱好设置为其他的密码。

如果在此步骤出现类似下面的错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

请执行下面的SQL语句,如下命令:

flush privileges;

Step-10:退出mysql,重新登录

退出mysql,然后重新使用修改过的密码登录mysql,完事。

MySQL配置文件?

这也是个神奇的问题,最后在MySQL的官方手册里找到了Answer。

在Windows系统中C盘有个隐藏的文件夹,我们来揭开它的神秘面纱。

打开C盘文件,按照下面1、2、3顺序就可以看到ProgramData文件夹,如下:
在Win10上折腾MySQL8.0.15
进入该文件夹,就可以看到MySQL的配置文件,如下:
在Win10上折腾MySQL8.0.15
上面我们已经说过,启动mysql80服务就默认使用的是该配置文件,可以在Windows服务中点击MySQL80查看其属性,可以看到下面的描述:

可执行文件的路径:
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80

其中,--defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" 就是指定配置文件路径的。

而在Windows服务中点击MySQL,看到的属性是这样的:

可执行文件的路径:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" MySQL

并没有指定配置文件,这也是为什么让大家启动的时候执行 net start mysql80 的原因。

顺便修改一下配置文件,把默认编码改为utf-8,如下配置(记得是在[client]和[mysql]标签下):

[client]
# pipe=
# socket=MYSQL
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

[mysql]
no-beep
# 设置默认编码
default-character-set=utf8

还有奇葩的错误

会持续记录各种奇葩错误。

1、ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

登录mysql服务,报上面的错误,说明没有启动成功mysql80服务,最大的可能是你修改了配置文件要么是格式错了要么是配置的东西mysql不认。

只能把配置文件修改正确才能启动服务。


我们要学会做自己精神领域内的君王,不要成为别人情绪世界里面的奴隶。
在Win10上折腾MySQL8.0.15

相关标签: mysql windows10