mysql8.0之后与5.7存在着很大的差异,这些差异不仅仅表现在功能和性能上,还表现在基础操作和设置上。这给一些熟悉mysql5.7的小伙伴带来了很多困扰,下面我们就来详细介绍下8.0的安装和配置过程。
1.yum安装
由于centos默认的yum源中没有mysql,所以我们要使用yum安装mysql就必须自己指定mysql的yum源。在官网下载mysql的yum源包,这个源包是一个rpm包,我们先使用rpm的方式安装这个源包,安装完之后yum就多了一个mysql的源。然后我们直接使用yum的方式就可以自动安装mysql了。
2.rpm安装
从官网下载rpm包,然后再在linux上安装。mysql不提供所有组件的整合rpm包,如果用这种方式需要一个一个组件的安装。比如先安装MySQL Community Server,再安装mysql client,再安装mysql lib。这种方式想要安装完整的mysql服务比较麻烦,需要一个个组件依次安装一遍,而且安装过程中还可能会碰到缺少依赖软件的情况。
3.tar安装
从官网下载tar包,在服务器上解压,然后自己配置,手动安装。这样很灵活,可以指定安装目录等参数。
这里推荐:
如果想安装mysql全部组件(一般mysql服务端就需要全部组件),那就使用yum方式;
如果受限于资金问题,服务器资源不够,需要一台机器上需要安装多个mysql服务端实例,那必须使用tar的方式,手动指定安装目录等参数;
如果只想安装mysql的部分功能,比如只装一个能连接mysql服务器的客户端,那就选择rpm的方式单独安装客户端组件。
本篇介绍yum方式的安装流程。
1.官网下载yum源包(本质是一个rpm包)
打开官网链接:https://dev.mysql.com/downloads/repo/yum/
选择与你系统对应的rpm包,这里我们系统是centos7,所以选择下图红框内的这一个。
下载完成后将下载下来的mysql80-community-release-el7-3.noarch.rpm包上传到linux上。
2.删除原有的mysql和mariadb
由于centos7中已经默认集成了mariadb,它是mysql的一个分支版本,底层还是mysql,所以如果我们在有mariadb的机器上再安装mysql会有一些冲突,为此我们的第一步就是先卸载centos7默认集成的mariadb(也有可能你的centos7没有默认集成mariadb,如果没有就不用卸载了)。
查看电脑中mariadb相关包
rpm -qa | grep mariadb
如果有结果输出的话,将所有与mariadb相关的都删掉,删除使用如下命令:
rpm -e --nodeps xxx
查看电脑中mysql相关的包
rpm -qa | grep mysql
如果有结果输出的话,将所有与mysql相关的都删掉,删除使用如下命令:
rpm -e --nodeps xxx
3.安装yum源包
执行如下命令来为centos7的yum命令安装mysql源
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
安装完成之后会在/etc/yum.repos.d/目录下生成两个repo文件:mysql-community.repo 和 mysql-community-source.repo。这两个文件就是yum的源文件(如果对yum不太熟悉,那可以不用管这两个文件,并不影响安装)。
安装完成后需要再执行如下两个命令来刷新yum的缓存
yum clean all #清除yum缓存
yum makecache #重新构建缓存
4.yum安装mysql
经过第二步之后,centos中就已经有了mysql的yum源了。所以对于mysql的安装我们只需要一行命令就可以解决了,命令如下:
yum install mysql-community-server
这一步基于每台电脑的网速不同,执行速度也不一样,可能速度较慢。
这里需要注意,yum安装mysql的时候,默认是安装最新版的mysql,目前最新版是8.0,所以直接使用上面的命令安装是安装的8.0版本。如果你想安装其他版本的mysql,需要先修改/etc/yum.repos.d/mysql-community.repo文件,在运行上面的安装命令,修改方法如下:
如上,是我当前的文件内容,因为默认是安装最新版也就是8.0,所以红框内8.0的enabled为1。如果我们想安装其他版本的mysql,直接将8.0的enabled改为0,其他版本的enabled改为1就可以(要安装哪个版本哪个版本的enabled就改为1,其他版本改为0)。
至此,我们的mysql就安装完毕了,下面就开始配置一下这个新的mysql。
5.启动mysql
安装完成后先启动下mysql,启动命令如下:
service mysqld start
启动完成之后的mysql并不能直接使用,我们需要再进行一系列配置才能正常使用mysql。配置过程见下面的步骤6,7,8,9。
6.获取初始密码
mysql8在安装完成之后会自动创建一个只能在localhost才能访问的root用户,并且这个root用户会有一个初始密码。如果初始密码没有修改,root账号是不能执行除修改密码之外的命令的。这也就要求我们,要想使用mysql,必须先把自动创建的root用户的密码给改了。
初始密码存放位置:/var/log/mysqld.log,打开这个文件,下图红框内白底的一串字符就是初始密码。
*:冒号后面的空格不算在密码之中,密码是空格后面的部分。
7.修改初始密码
使用自动创建的root账户和初始密码登陆mysql,登陆命令如下:
mysql -u root -p
之后会让你输入密码,输入初始密码之后进入mysql命令界面。
在mysql命令界面输入如下命令来修改初始密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Abc@1234567';
其中,Abc@1234567是新密码,可以自己随意指定。但是mysql8为了增强安全性,要求密码中必须包含大写字母、小写字母、特殊字符(!@#等)、数字。好多人都觉得这样的规则下密码太复杂,所以修改了mysql8的默认密码规则,让mysql8可以支持简单的密码,但我感觉并不好,密码复杂一点也挺好的,没必要修改默认密码规则。
修改完成后在mysql命令界面输入exit就可以退出命令界面了。
8.正常登陆
使用修改后的密码登录mysql,登陆命令如下:
mysql -u root -p
输入新的密码之后就会进入mysql命令界面。
至此,我们就可以在安装mysql的服务器上连接mysql,使用root用户做任何操作了。但是安装时自动创建的root用户只能在localhost下才可以访问,也就是只能从本地访问本地的mysql。这也是mysql8的新改动,如果我们想在其他远程服务器上连接这个mysql还需要再做些配置,配置见下面的步骤9。
9.创建用户
使用mysql的最佳实践就是,创建一个拥有顶级权限的root用户,让root用户只能在mysql安装服务器的本地访问。然后再根据需要配置一些低权限用户,这些用户可以允许在远程访问。在这里我们保留安装时自动创建的root用户,再创建一个针对于fep数据库的账户fepadmin。
创建用户fep,让这个用户在所有ip下都可以访问,命令如下(其中%表示允许所有ip都可以访问,也可以把%换成具体的ip):
create user 'fep'@'%' identified by 'Abc@12345678';
给用户授权,命令如下(让这个用户只有fep数据库的权限):
grant all privileges on fep.* to 'root'@'%' with grant option;
刷新用户权限,命令如下(不刷新不生效):
flush privileges;
mysql8中创建用户和授权的命令必须拆开写,先创建用户再授权,这也是mysql8相比5.7的不同点之一。
关于mysql的用户和权限这一块如果不清楚的话,还需要再查阅下相关资料,这一块挺重要的,在这里就不再展开将用户和权限了。
10.使用新建用户登录
至此,我们就可以使用新建的fep用户在远程连接mysql服务器了,比如在windows机器上使用navicat连接远程linux上的mysql。
11.配置参数
至此,mysql已经可以正常使用。但是一般我们还会在mysql正式使用之前对mysql再进行下配置,如编码,各种日志的输出位置,端口等。
mysql的配置文件是/etc/my.cnf,我们只需要修改这个文件里面的内容即可。
基本配置:
[mysqld]
datadir=/var/lib/mysql --安装时默认的配置,数据文件的存放地址。
socket=/var/lib/mysql/mysql.sock --安装时默认的配置,socket文件的地址
default-storage-engine=INNODB --自定义的新配置,创建表时的默认引擎
character-set-server=utf8 --自定义的新配置,mysql服务器的编码
max_connect_errors=100 --自定义的新配置,最大支持的连接失败次数
port=3306 --自定义的新配置,mysql服务器的监听端口
default-time_zone='+8:00' --自定义的新配置,mysql服务器的时区
log-error=/var/log/mysqld.log --安装时默认的配置,错误日志的存放路径
pid-file=/var/run/mysqld/mysqld.pid --安装时默认的配置,pid文件的存放路径
主要是把mysql服务器的编码和时区配置一下,可以直接复制我的内容到my.cnf中,然后重启mysql,重启命令如下:
service mysqld restart
12.配置结束
至此,mysql8的安装和配置都结束了,基本可以满足日常使用。