近期项目需要搭配mysql一起存储相关数据,但对mysql的版本有要求,于是在服务器搭建了mysql5.7,顺便记录一下搭建步骤和踩坑解决步骤。
目录
前言
一、清除旧安装包
二、安装YUM
三、使用yum命令即可完成安装
四、重新设置密码
五、创库
六、项目连接数据库
1、查看系统中是否已安装 MySQL 服务
rpm -qa | grep mysql
或
yum list installed | grep mysql
或
apt-cache search mysql
(命令不同,取决于你用哪个linux系统,以下操作我用centos7搭建)
2、如果已安装则删除 MySQL 及其依赖的包
yum -y remove mysql-libs.x86_64
1、下载 mysql57-community-release-el7-8.noarch.rpm 的 YUM 源
下载命令:
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
2、然后进行repo的安装:
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
执行完成后会在/etc/yum.repos.d/目录下生成两个repo包:
mysql-community.repo
mysql-community-source.repo
Linux的配置文件为/etc/my.cnf
(windows的配置文件为my.ini)
注意:必须进入到 /etc/yum.repos.d/目录后再执行以下脚本(这里我没在此目录中安装,最后安装完没有client.cnf两个文件,可能是这个原因)
安装命令:
yum install mysql-server
(此时会有一个报错,说安装失败)
报错一:如果遇到安装不成功,提示:The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
原因:
软件开发商在释出 RPM 文件时,会在其中添加数字签名,并释出用于验证数字签名的公钥。使用 rpm 安装软件时,rpm 会首先根据系统中已有的公钥去验证 RPM 文件的数字签名。gpg keys 就是公钥。
解决:
1、yum添加–nogpgcheck
yum安装的时候就会校验软件包是否是官方发布的。当然可以给yum添加–nogpgcheck来强制安装,如下命令即可
yum install mysql-server --nogpgcheck
所以在安装的时候会比对已有的公钥,发现不正确,报错了
2. 启动msyql:
systemctl start mysqld #启动MySQL
3、获取安装时的临时密码(在第一次登录时就是用这个密码):
grep 'temporary password' /var/log/mysqld.log
4、登录mysql
mysql -u root -p
然后输入密码(刚刚获取的临时密码)
————————————————
如果登录mysql时再发现报错(报错ERROR 1045),
参考这个链接
CentOS7下安装mysql5.7(亲测完成)_mysql5.7 centos7-CSDN博客
————————————————
如果你想要设置一个简单的测试密码的话,比如设置为123456,会提示这个错误,报错的意思就是你的密码不符合要求:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
validate_password_length(密码长度)参数默认为8,我们修改为1
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
完成之后再次执行修改密码语句即可成功
mysql> alter user 'root'@'localhost' identified by '654321';
Query OK, 0 rows affected (0.00 sec)
重新启动MySQL服务
systemctl start mysqld #启动MySQL
进入MySQL
出现密码输入时,不用输入直接按回车,就可以不用密码就能登录
mysql -u root -p
密码直接回车
创建新的数据库后,就可以给新库设置单独的用户和密码
举个例子:
为Confluence创建对应的数据库、用户名和密码
mysqld [(none)]> create database confluence default character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)
mysqld [(none)]> grant all on confluence.* to 'confluence'@'%' identified by 'confluencepasswd';Query OK, 0 rows affected (0.00 sec)
mysqld [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)
第二个报错:设置密码时报错
在第二步在mysql中给confluence设置密码时会有报错,提示密码不和要求,需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
进入mysql中,输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值即可解决。
在连接数据库时可能会有两种报错,这里也用confluence举例,一种是说字符集不是utf8(我当时用kali自带的数据库配置的,连接不上,最后还是用centos7安装mysql避坑的),一种是下面这种问题:
SQLState - 08S01 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 2 milliseconds ago. The last packet sent successfully to the server was 2 milliseconds ago(解决办法如下):
第三个报错:Mysql:SQL 错误 [08S01]: Communications link failure, Bad handshake,idea 连接mysql,报08S01,
原因大致如下:
在5.7.28之后,useSSL是true,这个需要配置SSL证书
因为此版本之后已经默认支持 SSL,所以连接实际应用会使用 SSL
解决方法:
mysql的配置文件/etc/my.cnf的[mysqld] 下面添加
skip_ssl
或者
ssl=0
完美解决问题,测试连接成功!
参考:
Mysql:SQL 错误 [08S01]: Communications link failure, Bad handshake,idea 连接mysql,报08S01,_08s01 sql-CSDN博客
也有其他方法,可参考下面这个连接(但我尝试了依然没绕过此问题):
https://cloud.tencent.com/developer/article/1650141