13703353520(同微信) 周一~周五, 8:00 - 20:00
QQ:25681881或25295110 邮箱:qhdzxz@163.com
易得优软件 河北•秦皇岛
  • 站群系统

    自主建站,易得优自主建站站群系统

  • 易得优餐饮库管系统

    十五年专注开发

  • 易得优智能工控

    智能工控,易得优是认真的

  • 音乐打铃播放无需电脑

    易得优音乐打铃系统无电脑版

MySQL 8.0的安装与调试

    时间:2020/1/13 9:30:34     人气:658


MySQL是一款非常专业的数据库管理系统,最为重要的是开放源码的,由知名度很高的瑞典MySQL AB公司开发,本文将说明MySQL 8.0在不同服务器系统中的安装及调试。


 

本文刊发于《网络安全和信息化》2019年第12期

12期.jpg


MySQL8.0版本拥有体积小巧、读取和存储速度快的特点,而且完全脱了MylSAM存储引擎,许多中小型网站为了降低网站总体拥有成本而选择了MySQL8.0作为网站数据库。

一、 Windows服务器中安装MySQL 8.0。

第一步:准备工作。

如果这台服务器中已安装有mysql老版本,应该先停止mysql服务并卸载,卸载时应该注意路径问题。

>net stop mysql

>mysqld –remove

如果服务器系统是Win2008及其以下版本,还应该下载并安装VC2015补丁:https://www.microsoft.com/zh-cn/download/details.aspx?id=53587

第二步:下载Win64位的mysql压缩包:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-winx64.zip ,并解压到一个文件夹中,如:D:mysql8 ,然后添加解压目录中mysqld.exe所在bin目录到环境变量:

右键“计算机”-》“属性”-》“高级系统设置”-》“环境变量”,在“用户变量”的“Path”路径中添加“;D:mysql8in”,

第三步:添加my.ini配置文件,内容如下:

[mysqld]

; 设置mysql的安装目录

basedir=D:mysql8

; 设置mysql数据库数据的存放目录

datadir=D:mysql8

;设置3306端口

port = 3306

; 允许最大连接数

max_connections=200

; 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

;设置协议认证方式

default_authentication_plugin=mysql_native_password

; 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

; 大小写不敏感

lower_case_table_names=1

[mysql]

default-character-set=utf8

第四步:在解压目录D:mysql8下执行 mysqld --initialize 初始化数据库,如果一开始就存在data文件夹请先删除它。执行完成后,临时密码就是在新生成的data文件夹中的扩展名为.err文件主名。

第五步:执行mysqld --install 安装mysql服务,安装完成后,可以从系统服务中启动mysql服务。

第六步:在命令窗口中用mysql命令测试是否可以正常登录。

如果不能登录并提示:Access denied for user ‘root'@'localhost' (using password:YES),说明密码有误,解决方式如下:

1、以管理员的身份进入到cmd命令窗口,并cd到MySQL8安装路径的bin目录下。

2、关闭MySQL服务:net stop mysql 。

3、使用 --skip-grant-tables配置项的方式,跳过权限验证进入mysql。

注意:MySQL8.x版本不支持直接修改my.ini配置文件的内容,会导致 “MySQL服务无法启动,服务没有报告任何错误”。

命令:mysqld --console --shared-memory --skip-grant-tables

说明:若缺少 --shared-memory ,则会提示错误:“TCP/IP,--shared-memory,or -name-pipe should be configured on NT OS”。

4、保持第3步骤窗口不关闭,再以管理员身份打开另一个cmd窗口并进入到MySQL安装路径下的bin目录,输入mysql,此时便能成功登录。

5、刷新权限:flush privileges;

6、修改密码:alert user  'root'@'localhost'  identified by  '新密码';

7、修改成功后,正常启动MySQL服务,使用用户名、密码进行登陆校验是否设置成功。

启动MySQL服务:net start mysql

登陆命令:mysql -uroot -p密码

二、 CentOs7服务器中安装MySQL 8.0。

第一步:准备工作。

查看mysql安装,如果这台服务器中安装有mysql老版本,应该先停止mysql服务并卸载,如图1。

# rpm -qa|grep -i mysql

A1.png

图1

根据查询结果卸载并关闭mysql服务:
# rpm -ev --nodeps  mysql57-community-release-el7-10.noarch

# rpm -ev --nodeps  mysql-community-libs-compat-5.7.25-1.el7.x86_64

# rpm -ev --nodeps  mysql-community-libs-5.7.25-1.el7.x86_64

# rpm -ev --nodeps  mysql-community-common-5.7.25-1.el7.x86_64

执行完上述命令之后再次执行rpm -qa|grep -i mysql 会发现已经卸载完成,如果存在etc/my.cnf这个文件的话一定要删除掉。

# cd /etc

# rm my.cnf

第二步:下载64位的mysql压缩包:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz ,并上传到 /usr/local 目录中。

第三步:直接执行解压命令,完成解压,解压之后会得到一个文件夹,mysql-8.0.16-linux-glibc2.12-x86_64,为方便操作可以改名成mysql,然后再建立数据文件夹data。

# cd /usr/local

# tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz

# mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql

# cd /usr/local/mysql

# mkdir data

第四步:

建立相关用户组及用户(如果已经存在,可以忽略)

# groupadd mysql

# useradd mysql -g mysql

更改data目录权限为mysql

# chown mysql:mysql data

初始化mysql数据

# bin/mysqld --initialize --user=mysql --datadir /usr/local/mysql/data

可以看到如下内容,其中IH8D0>zFyy6d 为初始密码,如图2。如果忘记密码,最简单的操作就是删除data目录,再重新初始化。

A2.png

图2

# cp support-files/mysql.server /etc/init.d/mysql  ##将MySQL加入到服务自启动

# /etc/init.d/mysql start   #通过服务启动MySQL,最好重启动一下服务器

# mysql -uroot -p  #根据提示输入刚才的临时密码

登录成功后更改当前用户密码。

> alter user user() identified by '新密码' ;

> quit;

# mysql -uroot -p新密码  #用新密码即可登录成功。

需要注意的是,MySQL8默认的认证插件为Caching_sha2_password,原先采用的是mysql_native_password,这使得原来的Navicat、phpMyAdmin等连接出现认证失败,我们还需要把root帐号的认证方式改回原来的mysql_native_password方式并重新设置密码,从而保证Navicat、phpMyAdmin等能正常连接,mysql 8.0的授权写法跟以前版本是有所区别的:

> use mysql;

> update user set host = '%' where user = 'root';

> flush privileges;

> alter user root identified with mysql_native_password  by '新密码' ;

> flush privileges;

此时,我们查看一下数据表user的内容,会发现root帐号的认证方式与其他帐号是不同的,如图3。

> use mysql;

> select user,host,plugin,authentication_string from user;

A3.png

图3