@欧阳方超:​zhuanlan.zhihu.comzhihu-card-default.svg

1、概述

本文记录在CentOS7.5中使用rpm包安装MySQL8的过程,以及装完数据库之后需要做的一些设置,包括设置非大小敏感、设置远程连接、修改数据库默认存储目录,是对过往工作经历的总结,一份书写一份沉淀,若能不经意间帮到正在路上的你,吾心备喜焉。

2、安装过程

2.1、上传rpm包到CentOS中

本文使用的rpm捆绑包(rpm-bundle),包含client、server以及一些其他内容,从MySQL官方的下载列表中也可以看出rpm-bundle文件大小是最大的,所以它包含的内容是也是最全的,本文使用的版本详细如下:

mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar

将tar包上传到当前用户的home目录下。

2.2、检查并卸载MariaDB

从CentOS7开始,CentOS系统预装了MariaDB数据库,它是MySQL的一个分支,由最初的MySQL开发者管理维护,如果我们暂时不需要该数据线库,可以将其卸载,如果不卸载的话在安装MySQL时也会出现错误。 检查MariaDB的安装情况,命令rpm -qa|grep mariadb,如下:

[Jhone@workstation ~]$ rpm -qa|grep mariadb

mariadb-libs-5.5.56-2.el7.x86_64

卸载已安装的MariaDB,命令rpm -e --nodeps xxx,如下:

[Jhone@workstation ~]$ sudo rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

若要检查系统中是否已安装MySQL,也可以使用上面的命令进行检查和卸载,将参数换成MySQL相关的即可。

2.3、解压MySQL8安装包

tar -xvf mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar

[Jhone@workstation ~]$ tar -xvf mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar

mysql-community-server-8.0.15-1.el7.x86_64.rpm

mysql-community-client-8.0.15-1.el7.x86_64.rpm

mysql-community-common-8.0.15-1.el7.x86_64.rpm

mysql-community-libs-8.0.15-1.el7.x86_64.rpm

mysql-community-devel-8.0.15-1.el7.x86_64.rpm

mysql-community-test-8.0.15-1.el7.x86_64.rpm

mysql-community-libs-compat-8.0.15-1.el7.x86_64.rpm

mysql-community-embedded-compat-8.0.15-1.el7.x86_64.rpm

通常,要实现MySQL的实用且标准的安装,需要把 mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, and mysql-community-libs-compat这些包都进行安装,即使用如下命令:

[Jhone@workstation ~]$ sudo yum install mysql-community-{server,client,common,libs}-*

安装这些包时使用更高级别的包管理工具(如yum)更可取的,喜欢使用rmp命令的用户可以考虑使用rpm -Uvh来取代yum install,然而使用rpm -Uvh安装时更容易失败,因为存在一些潜在的依赖问题。 如果只安装MySQL的客户端程序,在安装列表里面可以略过mysql-community-server,即使用如下的命令:

[Jhone@workstation ~]$ sudo yum install mysql-community-{client,common,libs}-*

2.4 安装完成后默认目录概览

使用RPM包产生安装标准的MySQL时会在系统目录下产生一写文件和资源,它们的具体路径如下:

安装结束后会在系统中产生名为mysql的用户和名为mysql的组。 注意,使用老版本的安装包安装MySQL的话,会在/usr下产生一个名为my.cnf的配置文件,在此强烈推荐,将该文件的内容合并到/etc/my.conf中,并移除/usr/my.conf。

3、修改MySQL8大小写敏感问题

MySQL8默认情况下是区分大小写的,这也是在一次迁移数据库的过程中发现的问题,要想设置MySQL8为非大小写敏感,可以在/etc/my.cnf中添加一行内容,lower_case_table_names=1(1-不敏感,0-敏感,MySQL8中默认大小写敏感),注意一定要在首次启动数据库服务之前进行添加,且应该添加到datadir之前,如下所示,一旦启动后再添加该内容设置非大小写敏感将无效,且可能面临数据库无法启动的问题。

lower_case_table_names=1

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

4、MySQL启/停

MySQL在安装过程结束后是没有启动的,可以使用下面命令来管理MySQL 启动MySQL:

systemctl start mysqld

重启MySQL:

systemctl restart mysqld

停止MySQL:

systemctl stop mysqld

查看MySQL状态:

systemctl status mysqld

mysqld服务默认是使能的,随系统启动而启动。还可以使用service命令来管理MySQL,与systemctl命令的区别是,后面的两个参数互换一下位置,如下: 启动MySQL:

service mysqld start

重启MySQL:

service mysqld restart

停止MySQL:

service mysqld stop

查看MySQL状态:

service mysqld status

5、初始化时发生了什么

假设data directory是空的,那么在数据库初始化节点发生了一下几件事:初始化MySQL服务

在data directory中生成SSL证书和key文件

安装密码有效性验证机制(validate_password)并使之生效

创建超级用户账号root,设置root的密码并将其保存在日志文件中(/var/log/mysqld.log)

注意,密码有效性验证机制要求密码包含至少一个大写密码、一个小写字母、一个数字和一个特殊字符,且密码长度至少为8为。如果安装过程中出现问题,可以查看日志文件——/var/log/mysqld.log

6、安装完毕之后的设置

6.1、查看root的临时密码并登陆

使用grep命令在日志文件中查看root用户的临时密码,如下:

[Jhone@workstation ~]$ sudo grep 'temporary password' /var/log/mysqld.log

2020-03-26T08:55:59.825512Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: H5NAGiWh,tOm

因为是临时密码,在此将其公之于众也无妨 :)。 使用上面查到的临时密码登录数据库,虽说在命令行中直接显式地输入密码不提倡,但有时临时密码略显复杂,不太容易做到一次输对,所以用临时密码登录时暂且用这种方式吧:

[Jhone@workstation ~]$ mysql -uroot -pH5NAGiWh,tOm

6.2、修root用户的密码

在用临时密码登录数据库之后,需要修改root用户的密码,否则无法使用数据库。具体操作如下:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword888!';

Query OK, 0 rows affected (0.01 sec)

6.3、授权远程连接

6.3.1、对远程命令行连接的支持

默认情况下,MySQL数据库不支持远程连接,可以是使用use mysql命令进入到mysql这个数据库下,查看user表中root用户的host值,查看命令如下:

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

+-----------+------------------+------------------------------------------------------------------------+

| host | user | plugin |

+-----------+------------------+------------------------------------------------------------------------+

| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | root | $A$005$(.%YF==%

+-----------+------------------+------------------------------------------------------------------------+

4 rows in set (0.00 sec)

为实现远程使用root用户访问MySQL,更新user表中root用户的host值为%即可,操作详情如下:

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

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

再次查看root用户host值:

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

+-----------+------------------+------------------------------------------------------------------------+

| host | user | plugin |

+-----------+------------------+------------------------------------------------------------------------+

| % | root | $A$005$W 4-XlUuGNx[\4j0z80uDbY0Sa4t2c0pO81/ujAy0tbtW5OE0nEkLaiX3jvD |

| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

+-----------+------------------+------------------------------------------------------------------------+

4 rows in set (0.00 sec)

可以看host已经变为%,然后还需要执行flush privileges;,执行效果如下:

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

经过以上修改,就可以从远程的命令行客户端连接MySQL了。

6.3.2、对GUI客户端工具连接的支持

如果使用GUI客户端进行连接,可能会出现以下错误:'caching_sha2_password' cannot be loaded

这是因为MySQL8使用了最新的认证插件——caching_sha2_password,而刚才使用的GUI客户端如果因版本低不包含此插件的话就会出现这种问题,解决方法有两种,要么使用新版本的GUI工具,比如MySQL Workbench 8.0 CE,要么把密码加密方式恢复到MySQL之前版本使用的方式——mysql_native_password,这里采用恢复到原来版本中使用的机密方式进行修改,操作如下:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newPassword888!';

Query OK, 0 rows affected (0.01 sec)

依然记得要执行flush privileges;,执行效果如下:

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

至此,通过远程命令行和GUI工具都可以连接MySQL数据库了。

6.4、修改数据存储目录

在生产环境中,如果想把数据存储在空间更大的目录下,就需要修改数据存储目录。

6.4.1、确认当前的数据目录

从命令行登录数据库,查看datadir的值:

mysql> select @@datadir;

+-----------------+

| @@datadir |

+-----------------+

| /var/lib/mysql/ |

+-----------------+

1 row in set (0.00 sec)

可以看到当前MySQL使用的的默认数据目录——/var/lib/mysql/,之后使用exit命令退出数据库即可:

mysql> exit

Bye

6.4.2、停止运行数据库

为保证数据完整性,在更改数据存储目录之前先停止数据库:

[Jhone@workstation ~]$ systemctl stop mysqld

6.4.3、使用rsync同步数据至新目录

使用rsync命令将已有数据同步到新路径下,该命令配合-a使用可以保留全新和其他目录属性,配合-v使用可以输出详细信息以便跟踪安装进度,假设要把新目录指定到/newmysqldata下,使用如下方式进行数据同步:

[Jhone@workstation ~]$ sudo rsync -av /var/lib/mysql /newmysqldata

注意,上面的操作没有在/var/lib/mysql后加斜杠,这种方式能把mysql目录本身及其来里面的内容全部同步到新目录中。 一旦同步完成,将/var/lib/mysql重命令为/var/lib/mysql.bak,以避免再次启动数据库时可能引起的混淆:

[Jhone@workstation ~]$ sudo mv /var/lib/mysql /var/lib/mysql.bak

6.4.4、修改配置文件

修改/etc/my.cnf文件,并将datadir指向新的数据目录,另外,由于socket也指向之前的数据目录,这里也需要将它更新为新目录:

datadir=/newmysqldata/mysql

socket=/newmysqldata/mysql/mysql.sock

除了更新配置文件中已存在的内容外,还需要在配置文件中为mysql客户端添加新内容,在文件末尾添加如下新内容:

[client]

port=3306

socket=/newmysqldata/mysql/mysql.sock

以上内容,存盘即可。

6.4.5、关于selinux工作模式

CentOS中selinux默认是开启的,可以通过如下命令查看:

[Jhone@workstation ~]$ getenforce

Enforcing

selinux有三种工作模式enforcing-强制模式、permissive-宽容模式和disabled-关闭模式,上面的输出标明其默认工作在强制模式下,在这种模式下可能会影响修改数据目录后的MySQL的启动,为此需要将工作模式更改为permissive或enforcing。 更改为permissive模式 可以使用setenforce 0命令临时从enforcing切换到permissive模式,并查看模式是否已变更:

[Jhone@workstation ~]$ sudo setenforce 0

[Jhone@workstation ~]$ getenforce

Permissive

enforcing 和 permissive 模式可以通过 setenforce 1或0 命令快速切换,但是这种切换是临时性的,在系统重启后立即失效。 如果想运行在permissive模式下且永久生效,需要修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,重启系统即可。 更改为disabled模式 在Linux命令行中无法直接通过命令将selinux切换到disabled模式,唯一的办法就是将/etc/selinux/config文件中SELINUX的值改为disabled,并重启系统。 需要注意的是,从disabled模式切换到enforcing或permissive模式时,只能通过修改文件并重启系统的方式解决,反之亦然。

6.4.6、重新启动MySQL并查看datadir

当selinux处于permissive或disabled模式时,修改了数据目录后的MySQL均可以正常启动,启动后再次从命令行登入MySQL,查看datadir的值:

mysql> select @@datadir;

+----------------------+

| @@datadir |

+----------------------+

| /newmysqldata/mysql/ |

+----------------------+

1 row in set (0.00 sec)

可以看到数据目录已经指向了新的目录。

7、总结

本文走过了从安装MySQL8到设置非大小敏感到设置远程连接到修改数据库默认存储目录这样一条华丽路线,给自己一份总结给读者一份帮助。

centos 7.5 mysql_CentOS7.5安装MySQL8以及相关设置相关推荐

  1. mysql忽略大小写配置cnetos_CentOS7下安装MYSQL8.X并设置忽略大小写

    安装 在官网上下载:mysql80-community-release-el7-2.noarch.rpm.安装方式与5.7没有任何区别.详细见:CentOS7下安装MYSQL5.7. 设置忽略大小写 ...

  2. Ubuntu下安装Pycharm及相关设置

    下载 Pycharm 社区版本 http://www.jetbrains.com/pycharm/download/#section=linux 安装指导 Copy the pycharm-commu ...

  3. python 包编译安装mysql_CentOS7编译安装MySQL8.0.23和Python3.1.9

    卸载mariadb rpm -qa | grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 yum remove mariadb-libs.x86_64 -y ...

  4. centos mysql 主从配置_centos7.4安装mysql8,并设置主从配置

    一.安装mysql 第一步:检查依赖# 查看历史mysql安装依赖 rpm -qa | grep mysql # 查看是否有自带的mariadb rpm -qa | grep mariadb # 清除 ...

  5. centeros6.8 mysql_centeros7安装mysql8,以及设置root密码

    2.点击下载后,在下载页面选择操作系统 3.点击下载rpm文件,拿到这个下载链接 4.移除mariadb数据库 yum remove mariadb-libs.x86_64 5.进入到/tmp目录使用 ...

  6. SQL Server 2012 下载和安装详细教程(附安装包 和安装后的 相关设置)

    一.SQL Server 2012 下载 SqlServer2012版镜像,文件较大,将近4G. 链接:https://pan.baidu.com/s/1rzWWxn_L69BvLUYtodRtAg密 ...

  7. 初次安装mysql8 设置密码为root

    初次安装mysql8 将密码设置为root时报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requi ...

  8. MYSQL再学习2-阿里云服务器Centos安装mysql8.0

    上一篇博主已经尝试了测试安装mysql5.7 参考博主上篇链接: CDSN:https://blog.csdn.net/SUBSEA123/article/details/123229957 博客园: ...

  9. CentOS安装MySQL8详细步骤

    **Centos安装Mysql8详细步骤 环境:CentOS7+Centos8 ** rpm包安装 一.下载mysql rpm bundle包 复制下载连接下载 wget https://cdn.my ...

最新文章

  1. [导入]web2.0中流行的设计元素:颜色
  2. 网页设计作业_Dreamweaver简单网页成品
  3. simulink中不能改名_《和平精英》没有卡如何解决 改名字方法
  4. 只安装和配置instantclient,用plsql developer,navicat for oracle,sqlplus连接oracle数据库 ....
  5. gem install sass 本地配置和淘宝源无效的解决办法
  6. Python基础-3内建函数 type() cmp()
  7. RabbitMQ下载与安装(window版) 自我总结
  8. redis、kafka、rabittMQ对比 (转)
  9. 漫画:什么是优先队列?
  10. matlab低通滤波器库函数代码_MATLAB低通滤波器的设计代码
  11. Mac应用程序崩溃,无法启动的解决方法
  12. module ‘cv2‘ has no attribute ‘SIFT‘
  13. mysql现象_Mysql编程中的怪现象
  14. pacman 查询_ArchLinux的包管理系统: pacman
  15. 【Access2003】表的新建、用sql语句查询;关闭警告信息;修改数据库密码;修复数据库
  16. 亚马逊服务器 购买 流程_亚马逊环如何使我们对购买的每种产品都抱有偏执
  17. 头头合作项目之requests
  18. PMM 监控原理以及部署
  19. Linux云计算之OpenStack(Keyston - 认证服务)
  20. [转帖]SAP一句话入门:Plant Maintenance

热门文章

  1. 设置linux环境变量
  2. 用技术谱写美好生活,「亚马逊云科技线上黑客松2021」报名开启!
  3. 了解架构设计远远不够!一文拆解 Tomcat 高并发原理与性能调优
  4. 23 岁创业,28 岁成为福布斯亚洲青年领袖,这个“刷脸的男人”有点牛
  5. Yaniv Erlich:DNA 很可能是人类终极的储存设备
  6. 双域隔离技术何以助力物联网安全? | 人物志
  7. AI 六十年,强人工智能何时到来?
  8. Uber 提出损失变化分配方法 LCA,揭秘神经网络“黑盒” 60s测试:你是否适合转型人工智能? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
  9. iPhone 11 引领芯片新革命?
  10. 开学季,复旦老师教你玩转“0”“1”浪漫!| 人物志