一 下载mysql
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下载完解压到你想要存放的位置 我的是解压到D:\mysql-5.7.20-winx64
解压完成后是没有data文件和my.ini配置文件 这些都是要自己补充(下文有补充)
接下来是设置环境变量。我的是w10,打开系统变量,配置mysql的环境变量,下图是通过命令行打开系统变量
创建MYSQL_HOME变量,变量值为你解压的位置
在Path中添加%MYSQL_HOME%\bin;(注意结尾处有分号)
最后保存就完成了MySql的环境变量配置了
接下来是补充data文件和my.ini
在D:\mysql-5.7.20-winx64\bin目录下用管理员打开cmd (管理员打开cmd的方法有几种,其中一种可以通过win+x 然后选择命令提示符(管理员)打开后记得在DOS转到 D:\mysql-5.7.20-winx64\bin目录下) 然后运行mysqld --initialize-insecure --user=mysql (注意有空格)
然后返回目录就会发现有data目录了
创建my.ini文件,内容为(这里内容不一定要按照下文 可以自行百度 但是其实都差不多内容)
[client]
port=3306
default-character-set=utf8
[mysqld]
# 设置为自己MYSQL的安装目录 windows: D:\\mysql-5.7.20-winx64
basedir=D:\mysql-5.7.20-winx64
# 设置为MYSQL的数据目录 windows: D:\\mysql-5.7.20-winx64\data
datadir=D:\mysql-5.7.20-winx64\data
port=3306
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true
#免密码登陆
skip-grant-tables
完成上面两个文件的创建后,还是在D:\mysql-5.7.20-winx64\bin下用管理员运行cmd 输入命令 mysqld -install 如果出现Service successfully installed 说明注册成功了
因为我已经注册好了,所以再运行该命令时会出现上图
接下来 运行net start mysql命令(启动MYSQL命令) 会出现下图
net stop mysql命令(停止MYSQL命令)
到这里,你就完成了MySql的相关下载和配置
运行“net start mysql”命令,出错!
如图所示,安装提示成功,开启服务失败。
运行“mysqld --console ”命令可以显示出启动错误信息
执行命令“mysqld -remove”将其删除并重新运行” mysqld -install “命令进行安装。提示成功。 执行” mysqld - -console “命令。
二 安装遇到的问题
首先描述一下在安装过程中出现的问题:
安装时首次提示“电脑缺少msvcr120.dll文件”,问题是电脑里本身就有这个文件啊,然而在下载下来运行后又提示与电脑不匹配了。。。
因为是安装新版本的MySQL文件,所以是按照官网教程来安装,然而教程里早已阐明一切。。
截图:
图中Important可以看到,在安装MySQL 5.7 Server 之前用户需要先确保已安装 “Microsoft Visual C++ 2013 Redistributable Package”
问题就出在这一步,很关键的一步哈
- 1
- 2
按正常思维来说,看到这我就开始确认自己电脑有没有上面的这个东西,打开控制面板->程序,Wow,它就安静的呆在那里,不悲不喜
呃呃,回归正题,这个时候,我就开始进行下一步了,然而,问题就在这,我电脑上的显然是老版本的,此刻如果从官网下载,必然是升级后的软件包,所以这就导致了之后安装MySQL时报错。
我是怎么发现的?当然是在自己电脑上试验过后,又拿小伙伴电脑试验啦,在官网下载安装包安装并重启电脑后就ok了,真是给别人做了嫁衣,呃呃,开玩笑,其实也没有了,自己也积攒了经验,还可以分享给别人,何乐而不为呢
Microsoft Visual C++ 2013 Redistributable Package 官网链接:
https://www.microsoft.com/zh-cn/download/details.aspx?id=40784
Microsoft Visual C++ 2015 Redistributable Package 官网链接:
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
三、简洁过程
一:下载相应版本的mySql
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下载 msvcr120.dll:
https://www.microsoft.com/zh-cn/download/details.aspx?id=40784
安装:mysqld --initialize-insecure --user=mysql
注册:mysqld –install
net start mysql命令(启动MYSQL命令)
net stop mysql命令(停止MYSQL命令)
登陆mysql: mysql -u root -p
修改密码:mysqladmin -uroot -p password
密码默认为空: set password for root@localhost=password(‘123456’)
配置远程登录
update user set host='%' where host='localhost' and user='root';
host为“%”的root用户,即可重启MySQL后直接在MF客户端连接即可成功。
修改datebase:
Use mysql;
GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
重新启动mysql服务
service mysql restart
四、异常处理
(一)mysql 5.7 加密方式修改
Mysql 5.7以后更改了加密方式。需要进行修改加密方式
- 先通过命令行进入mysql的root账户:
C:\Windows\system32> mysql -uroot -p
再输入root的密码:
Enter password: ******
- 更改加密方式:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
- 刷新: mysql> FLUSH PRIVILEGES;
(二)写入MySQL报错超出 max_allowed_packet 的问题
MySQL会根据配置文件会限制server接受的数据包的大小。如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。
查看当前配置: show variables like 'max_allowed_packet';
max_allowed_packet 如果不设置,默认值在不同的 MySQL 版本表现不同,有的版本默认1M,有的版本默认4M。
修改方法1(配置文件持久化修改):
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
vim /etc/my.cnf [mysqld] max_allowed_packet = 100M
注意:修改配置文件以后,需要重启mysql服务才能生效。
修改方法2(命令行临时修改) (修改后,重启数据库会恢复为默认)
mysql> set global max_allowed_packet = 100 * 1024 * 1024;
注意:
1.命令行修改时,不能用M、G,只能这算成字节数设置。配置文件修改才允许设置M、G单位。
2.命令行修改之后,需要退出当前回话(关闭当前mysql server链接),然后重新登录才能查看修改后的值。通过命令行修改只能临时生效,下次数据库重启后又复原了。
3.max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G。
(三)修改密码
mysql> use mysql;
mysql> update user set password=password('新密码') where user='用户名';
或者
mysql> update mysql.user set authentication_string=password('新密码') where user='用户名';
mysql> flush privileges; --刷新MySQL的系统权限相关表
MySQL 8.0后修改密码步骤
[root@localhost ~]# ./bin/mysql -u root -p '原来的密码'
mysql> show databases;
mysql> use mysql;
mysql> ALTER USER '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> flush privileges; --刷新MySQL的系统权限相关表
mysql> exit;