Centos7安装MySQL8

余生长醉 提交于 2020-03-09 14:14:05

MySQL 8.0 安装配置及错误排查

安装系统依赖

根据自有系统情况选择是否安装依赖包

yum install -y openssl-devel.x86_64 openssl.x86_64 
yum install -y libaio.x86_64 libaio-devel.x86_64 
yum install -y perl.x86_64 perl-devel.x86_64 
yum install -y perl-JSON.noarch 
yum install -y autoconf 
yum install -y wget
yum install -y net-tools

官网下载

MySQL 下载有两种方式

1.下载tar 包后上传

mysql官网下载链接:https://dev.mysql.com/downloads/mysql/

 

  • Select Operating System 中选择 “Red Hat Enterprise Linux / Oracle Linux”
  • Select OS Version 中选择 “Red Hat Enterprise Linux / Oracle Linux 7(x86, 64-bit)”
  • 点击Download(mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar)

上传包有xftp等工具可以使用 rz 命令(如若没有rz 命令,请使用yum install lrzsz 命令安装 rz 工具)

2.wget 下载

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

其中(el 后面的数字我认为是 centos 系统大版本号  如果是centos7 请选择 el7 的)

安装

CentOS7环境下的具体安装步骤
检测本地是否有mysql已存在的包:

rpm -qa | grep mysql

检测本地是否有mariadb已存在的包:

rpm -qa | grep mariadb

如果存在,则使用yum命令卸载:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

创建一个文件夹,上传jar包到/opt/software/mysql:

mkdir /opt/software/mysql

解压mysql jar包:

mkdir /opt/module/mysql
tar -xvf /opt/software/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql  (-C 是解压到指定目录)

 

  • 必要安装(注意顺序)
  • 安装common
  • 安装lib 依赖于common,确保已经卸载mariadb
  • 依赖于libs
  • 依赖于client、common
rpm -ivh mysql-community-common-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.13-1.el7.x86_64.rpm

非必要安装(注意顺序)

rpm -ivh mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.13-1.el7.x86_64.rpm

启动mysql(初次启动mysqld,会自动进行初始化工作)

systemctl start mysqld

初始化后,会产生临时密码,查询指令如下:

cat /var/log/mysqld.log | grep password

登录MySQL服务:

mysql -uroot -p

输入产生的临时密码

更改密码

由于MySQL8.0 有密码验证组件,若希望设置简单的密码,需要修改服务验证条件,可设置的验证条件如官网所示:

 

# 密码检查等级,0/LOW、1/MEDIUM、2/STRONG
set global validate_password.policy=0;
# 密码的最短长度
set global validate_password.length=6;
# 密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=0;
# 设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';

修改远程登录权限

USE mysql;
UPDATE mysql.user SET host = '%' WHERE user = 'root';
flush privileges;
SELECT host, user FROM user;

QA

1.初始化指令错误

mysqld --initialize --user=mysql

若发生错误,可能由于 /etc/my.cnf 中datadir指定的文件夹未清除,本机中为 /var/lib/mysql,具体的datadir查看本机配置文件中指定的路径。

vim /etc/my.cnf

删除datadir指定的文件夹

rm -rf /var/lib/mysql

清楚 log-error 指定的日志文件中的内容, 本机中为 /var/log/mysqld.log,具体的datadir查看本机配置文件中指定的路径。
注意,如果删除 /var/log/mysqld.log 了该文件,需要重新创建该文件,并修改文件访问权限

rm -f /var/log/mysqld.log 
touch /var/log/mysqld.log 
chmod 777 /var/log/mysqld.log 

最后重新初始化即可!

2.修改密码

mysql5.7.9之后,就没有了password函数,所以,使用传统的password()函数修改root密码的话,就会提示sql错误

UPDATE user SET authentication_string = password('123456') WHERE User='root';

ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '('123456') WHERE User='root'' at line 1

正确设置密码的方法是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

3.java程序无法连接MySQL

1. 升级 jar 版本至 8.xx 版本,如

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

2.配置变动

5.0.X版本连接的驱动地址为:"com.mysql.jdbc.Driver",而8.0.X版本的更改为:"com.mysql.cj.jdbc.Driver"

建立连接时url增加了一些参数: 5.0.X版本的url为String url = "jdbc:mysql://localhost:3306/student"

而8.0.X版本的需要在后面加上一串字母变为:String url = "jdbc:mysql://local:3306/student?&useSSL=false&serverTimezone=UTC"

 

卸载 MySQL

1.停止 mysql服务

systemctl stop mysqld.service

2.使用命令查看安装了哪些包

rpm -qa|grep -i mysql

依次使用如下命令来删除安装包

rpm -e --nodeps 包名

查看其它文件并删除

find / -name mysql

rm -f 文件或者 rm -rf 文件夹

如:
rm -rf /var/lib/mysql

rm -rf /var/lib/mysql

rm -rf /usr/lib64/mysql

 

 

最后删除配置文件

rm -f /etc/my.conf (可以使用 tab 补全)

 

参考文档

https://www.cnblogs.com/zyongzhi/p/10063149.html

https://blog.csdn.net/weixin_40780777/article/details/100553505#_2

https://www.cnblogs.com/saysmy/p/11135369.html

https://blog.csdn.net/sinat_41721615/article/details/84346249

 

 

 
 
 
 
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!