在mysql5.7存在的情况下在安装一个mysql8.0以上版本数据库的办法

我的第一次安装:(这是我第一次安装的记录主要通过改5.7的端口来实现8.0的无障碍免安装,建议网友们看我第二次在公司服务器上安装的记录》》》往下翻有第二次安装的教程)
第一次安装是在我本机电脑,环境是win10
想想都难受,为了想保住本机的5.7版本,在不卸载的情况下装一个mysql8.0以上版本,
1.为了方便起见我们先把本机mysql服务都停了(快捷win+R 运行 【services.msc】 打开【服务】然后将MYSQL57关了)
2.如果你的my.ini文件在安装目录直接打开,如果不在,一般在c盘全局搜一下my.ini就有了,改一下里面的客户端与服务端两个端口,可以改成3307,反正避开3306就行
3.官网上下载好非安装版(即解压帮)的mysql,解压后放到你想安装的盘,然后以管理员身份打开dos(即cmd)
初始化数据库
在MySQL安装目录的 bin 目录下(即cd mysql8的bin目录路径)执行命令:
mysqld --initialize --console
执行完成后,会打印 root 用户的初始默认密码,比如:
2018-05-01T14:35:01.507037Z 0 [Warning] [MY-010915] [Server] ‘NO_ZERO_DATE’, ‘NO_ZERO_IN_DATE’ and ‘ERROR_FOR_DIVISION_BY_ZERO’ sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2018-05-01T14:35:01.507640Z 0 [System] [MY-013169] [Server] D:\Program\MySQL8\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 11064
2018-05-01T14:35:01.508173Z 0 [ERROR] [MY-010340] [Server] Error message file ‘D:\Program Files\mysql-8.0.11-winx64\share\english\errmsg.sys’ had only 1090 error messages, but it should contain at least 4512 error messages. Check that the above file is the right version for this program!
2018-05-01T14:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
2018-05-01T14:35:07.017280Z 0 [System] [MY-013170] [Server] D:\Program\MySQL8\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed
其中,第4行的“APWCY5ws&hjQ”就是初始密码,在没有更改密码前,需要记住这个密码,后续登录需要用到。
要是你手贱,关快了,或者没记住,那也没事,删掉初始化的 datadir 目录,再执行一遍初始化命令,又会重新生成的。当然,也可以使用安全工具,强制改密码,用什么方法,自己随意。

3.安装并启动服务
在MySQL安装目录的 bin 目录下执行命令:
mysqld --install [服务名]
后面的服务名可以不写,默认的名字为 mysql。当然,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysql5 和 mysql8。
安装完成之后,就可以通过命令net start mysql8服务名 启动MySQL的服务了。

4.修改密码
在MySQL安装目录的 bin 目录下执行命令:
mysql -uroot -p
这时候会提示输入密码,记住了第3步的密码,填入即可登录成功,进入MySQL命令模式
在MySQL8.0.4以前,执行
SET PASSWORD=PASSWORD(’[修改的密码]’);
就可以更改密码,但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。
因为当前有很多数据库工具和链接包都不支持“caching_sha2_password”,为了方便,我暂时还是改回了“mysql_native_password”认证插件。
在MySQL中执行命令:
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;(注意一定要有分号)(注意一定要有分号)
修改密码验证插件,同时修改密码。
如果想默认使用“mysql_native_password”插件认证,可以在配置文件中配置default_authentication_plugin项。
[mysqld]
default_authentication_plugin=mysql_native_password

坑的总结
最后我要提醒访客的是:如果你按照以上方法反复安装出现dos登入时报错的情况,那么请不要纠结,直接把这个解压后的8.0以上版本删掉,记得服务名也要同时删掉删掉 dos命令:sc delete mysql8服务名 ***注意·***mysql数据库的数据的存放目录里的内容也要删掉,然后将你下载的mysql8zip包重新解压一边放在要安装的位置重新按照上面方法安装,这点要切记,不可想当然,不然会吃掉你很多时间(这就是我一直装了很久的原因),如果这样还不行,可能还需要配置下环境变量,因为我在安装的过程中也配置了环境变量,不过我认为这个关系不大,至于配置环境变量的方法和配置Java环境变量方式一样,不过如果5.7的版本若也存在与环境变量中,请先删掉, 注意配置完请保存,记得最后还要点一个确定的,配完环境变量还要重启,,,,
最后还有一点要说明就是我这个8.0以上版本的安装过程中没有涉及到这个版本mysql 的my.ini文件的修改,毕竟我在一开始就改了5.7版本的mysql把3306端口让了出来。

我的第二次安装
我的第二次安装是在公司新部署的内网服务器上,应该就是一块刀片式服务器上,系统环境是windows Server2012 ,下面展示安装步骤(这里演示的是免安装版的安装步骤):
1.到mysql官网上下载8.0以上版本的数据库:

社区版(即免安装版):https://downloads.mysql.com/archives/community/

安装版:https://downloads.mysql.com/archives/installer/

2.解压下载的免安装版程序到指定文件夹
进入bin同级目录
拷入my.ini文件如图:在这里插入图片描述
my.ini文件可以自己创建,文件内容是:

[mysql]
# 设置mysql客户端默认字符集
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4
[mysqld]
default_authentication_plugin=mysql_native_password
#设置3308端口,目的是避开5.7的默认3306端口
port = 3308 
# 设置mysql的安装目录
basedir=D:\Program Files\mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Program Files\mysql-8.0.11-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB 
max_allowed_packet=100M

3.新建mysql数据库的数据的存放目录(上面配置文件有要求写地址)

4.以管理员身份运行dos(cmd),然后切入bin目录
执行命令:mysqld --defaults-file=F:\MySQL\my.ini --initialize --console
***这里路径自己修改,但是注意***如果执行不成功报路径找不到那么试试改成相对路径如:

mysqld --defaults-file=..\my.ini --initialize --console

这一步是在初始化mysql,注意记录下输出的密码

5.设置服务名:在bin目录执行

mysqld install mysql8 

(mysql8是服务名可以自己命名)

6.启动mysql

net start mysql8

7.登入mysql8
输入命令mysql -uroot -P 3308 -p
***注意***这里指定端口号必须要加否则会登不上
登陆后就是改密码设置远程登陆之类的

1、实现远程连接(改表法)依次执行
将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。
update user set host = ’%’ where user = ’root’;

mysql> use mysql;

mysql> update user set host = ‘%’ where user = ‘root’;

mysql> select host,user,password from user;
±-------------±-----±------------------------------------------+
| host | user | password |
±-------------±-----±------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
±-------------±-----±------------------------------------------+

这样在远端就可以通过root用户访问Mysql.

2、以上还是不能远程连接那么在执行以下方法
将权限改为ALL PRIVILEGES

mysql> use mysql;
Database changed
mysql> grant all privileges on . to root@’%’ identified by “password”;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
±-------------±-----±------------------------------------------+
| host | user | password |
±-------------±-----±------------------------------------------+
| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
±-------------±-----±------------------------------------------+

这样机器就可以以用户名root密码root远程访问该机器上的MySql.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章