搞开发多年,其实MySql前前后后安装配置了无数次,但是每次都需要到网上搜教程,折腾半天才搞定,这次索性把整个过程全部记录下来,以便以后查阅。
下载
到MySql官网,导航找到DOWNLOADS>>Community>>MySQL Community Server页面,也可以直接点击此处,选择相应的Mysql版本的zip包,我这里是mysql-5.7.21-winx64.zip。
安装配置
- 下载好压缩包之后直接解压到将要存放的目录;
- 在根目录新建
my.ini
文件(并没有所谓的my-default.ini
文件),保存为ANSI
编码格式,如下图: -
向
my.ini
中拷入以下代码:[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\Program Files\\mysql-5.7.21 # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
- 在D:\Program Files\mysql-5.7.21\bin目录下,按住Shift+右键,选择在此处打开命令窗口;
- 执行命令
mysqld --install
,这时有可能会出现以下几种错误:-
Install/Remove of the Service Denied
出现该问题是因为执行命令的权限不够,到C:\Windows\System32目录下找到cmd.exe
文件,重新以管理员身份运行打开cmd窗口,然后转到D:\Program Files\mysql-5.7.21\bin目录,再次执行mysqld --install
命令。 -
丢失MSVCR120.dll,MSVCP120.dll
msvcp、msvcr、vcomp140.dll属于VC++2015版 msvcp、msvcr、vcomp120.dll属于VC++2013版 msvcp、msvcr、vcomp110.dll属于VC++2012版 msvcp、msvcr、vcomp100.dll属于VC++2010版 msvcp、msvcr、vcomp90.dll属于VC++2008版 msvcp、msvcr60、71和80.dll,以及vcomp.dll(不带数字版本号)属于VC++2005版
-
Found option without preceding group in config file
出现该错误一般是my.ini
文件头部缺少了[mysql]
,或者另一种情况是文件的编码格式不对,将文件编码保存为ANSI
即可。
-
Install/Remove of the Service Denied
- 执行命令
mysqld --initialize
,此时安装根目录下会自动生成data
文件夹(原目录没有该文件夹)。 执行命令
net start mysql
,启动服务,如下图,证明已经安装成功。
配置账号密码
但当我们输入mysql
命令时,会出现以下错误。
实际上我们并没有设置任何密码,解决办法如下:
- 打开MySQL目录下的
my.ini
文件,在文件的最后添加一行skip-grant-tables
,保存并关闭文件。 - 重启MySQL服务。
- 在命令行中输入
mysql -uroot -p
(不输入密码),回车即可进入数据库。 - 执行SQL语句
use mysql;
使用mysql数据库。 - 执行SQL语句
update user set authentication_string=password('123456') where user='root';
。 - 打开MySQL目录下的
my.ini
文件,删除最后一行的skip-grant-tables
,保存并关闭文件。 -
重启MySQL服务。
注:
此时如果执行如use mysql
等命令,可能会出现 You must reset your password using ALTER USER statement before executing this statement. 的错误,如果出现,则执行以下步骤即可:执行命令
SET PASSWORD = PASSWORD('123456');
;
执行命令ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
。
开启远程连接
- 执行命令
MySQL -uroot -p123456
; - 执行命令
use mysql;
; - 执行命令
update user set host = '%' where user = 'root';
; - 执行命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
给予任何主机访问数据的权限。