Redhat7.3安装Mysql8.0.17

Linux安装Mysql服务安装记录、开启远程连接、出现的问题以及解决方法。

Posted by LANY on October 14, 2019

背景

前不久,因为刚获得一台服务器的使用权,故重装了系统之后想搭建一个属于自己的环境。仔细想了想,感觉需要搭的环境还不少,于是便从简单的Mysql安装开始。鉴于之前一直是在windows上通过图形化界面安装,很少在linux上安装,所以想通过博文来记录此次Mysql的安装过程。

废话补多少,现在我们开始吧!

安装准备

安装前准备

  • Mysql8.0.17安装包

网上有很多教程都是通过yum安装,但是笔者在通过yum安装时遇上了缺少依赖的问题,于是为了省去找依赖的烦恼,安装的Generic(glibc2.2)版本的Mysql。

进入下载页面,点击 Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive 该行的download进行下载。

安装步骤

上传到目标机器

# 上传文件
scp mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz root@192.168.9.252:/usr/local

解压文件

通过root用户执行一下命令:

# 解压文件
tar -xJf mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz 

# 重命名文件
mv mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz mysql

添加系统mysql用户以及组

对mysql创建专用的用户组以及用户

# 创建mysql用户组
groupadd mysql

# 创建mysql用户
useradd mysql -g mysql

创建mysql配置文件

在这一步骤中需要注意配置文件中的datadir以及log-error这两个参数的值所对应的目录或者文件要真实存在!

# 创建配置文件
touch /etc/my.cnf

将下面的参数都写入到配置文件中

[client]
port=3306

default-character-set=utf8
socket=/data/mysql/mysql.sock
[mysqld]
log_error=/data/mysql-log/error.log
general_log_file=/data/mysql-log/mysql.log
general_log=1
slow_query_log_file=/data/mysql-log/mysql-slow.log
slow_query_log=1
long_query_time=2
log-queries-not-using-indexes
basedir=/usr/local/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

[mysqld_safe]
log-error=/data/mysql_log/error.log
pid-file=/data/mysql/mysql.pid

!includedir /etc/my.cnf.d

在将/etc/my.cnf赋予权限

chmod 644 /etc/my.cnf

需要注意的是不要对/etc/my.cnf赋予过大的权限(例如:777),这样会导致mysql启动不成功,因为mysql会认为该配置文件是不安全的从而忽略该文件。

创建数据目录以及日志目录

笔者在这里为了将mysql的数据以及日志目录独立出来,于是为mysql创建了单独的数据目录以及日志目录。读者可以根据情况自行选择这两个目录路径。

# 创建数据目录
mkdir /data/mysql

# 创建日志目录以及日志文件,并对日志文件赋予相应的权限
mkdir /data/mysql_log
cd /data/mysql_log
touch error.log
chmod 664 error.log

# 将安装目录、数据目录以及日志目录的拥有者改为mysql用户
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /data/mysql_log

初始化

完成上述的步骤之后,就可以对mysql进行初始化操作了。

/usr/local/mysql/bin/mysqld --initialize --user=mysql

完成初始化之后,会输出一个root临时密码,一定要记着这个密码。

添加mysql服务

cp support-files/mysql.server /etc/init.d/mysql 

将mysql命令添加到系统命令中

# 修改/etc/profile
vi /etc/profile

添加如下内容:

export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$JAVA_HOME/bin:$PATH
# 生效环境变量
source /etc/profile

mysql服务的启停

/etc/init.d/mysql start #启动
/etc/init.d/mysql stop #停止
/etc/init.d/mysql restart #重启

修改初始密码

进入mysql命令行

mysql -u root -p

输入初始化系统时输出的root临时密码


-- 将root 替换成你将要修改的密码
alter user user() identified by "root";
-- 刷新权限
flush privileges;

开启远程登陆

use mysql;

-- 创建用于远程登陆的账户
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
CREATE USER 'root'@'<127.0.0.1>' IDENTIFIED BY 'root';
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root';

-- 设置权限
GRANT ALL ON *.* TO 'root'@'%';

-- 修改该账户的密码永不过期
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

--设置登陆时密码加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

-- 刷新权限
flush privileges;

碰到的问题以及解决方案

Warning: World-writable config file ‘/etc/my.cnf’ is ignored

引发这个问题的根本原因是由于该文件是全局可写而认为是不安全的配置文件,mysql担心这种文件会被任意用户恶意修改,所以忽略掉这个文件的配置。

解决方案

修改/etc/my.cnf文件权限

chmod 644 /etc/my.cnf

Authentication plugin”caching_sha2_password” cannot be loaded

这是因为在mysql8以前,所有mysql的加密规则都是mysql_native_password。而在mysql8中,默认的加密规则修改为了caching_sha2_password

解决方案

两种方案:

1.将mysql用户登陆的加密规则修改为mysql_native_password.(推荐)

use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

2.更新驱动

官方教程