Centos7.1.1503 安装MySQL8.0.19
一.安装检查
1.1检查mariadb
rpm -qa | grep mariadb
1.2 删除mariadb
yum -y remove mariadb*
1.3 检查MySQL
rpm -qa | grep mysql
1.4 删除MySQL
yum -y remove mysql*
1.5 删除MySQL配置文件
rm -rf /etc/my.cnf
1.5 删除文件
rm -rf /var/lib/mysql
二.MySQL安装
2.1 下载MySQL rpm
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
2.2 安装 rpm
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
2.3 yum 安装mysql服务
yum install -y mysql-community-server
2.4 MySQL初始化
注意事项 安装完毕之后执行如下初始化语句 在初始化时,设置 lower-case-table-names
/*配置文件修改 /etc/my.cnf */
[mysqld]
lower_case_table_names = 1
/*执行初始化 */
/usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1
否则会报如下错误
Different lower_case_table_names settings for server ('0') and data dictionary ('1')
2.5 启动服务
systemctl start mysqld.service
如果报如下错误
[InnoDB] os_file_get_status() failed on './ibdata1'. Can't determine file permissions
依次执行下面步骤
/*执行初始化 */
cat /etc/my.cnf
pid-file=/var/run/mysqld/mysqld.pid
/*查看该目录是否存在。如没有,则创建,并修改属主属组。 */
ll /var/run/mysqld/
#不存在
mkdir -p /var/run/mysqld/
chown -R mysql:mysql /var/run/mysqld
/*启动。 */
systemctl status mysqld.service
/*关闭selinux 并重启。 */
setenforce 0
systemctl status mysqld.service
/*查看状态 */
systemctl status mysqld.service
2.6 查看服务状态
systemctl status mysqld.service
2.7 查看MySQL安装临时密码
grep 'temporary password' /var/log/mysqld.log
2.8 登录root账号修改初始密码,复制上面的密码登录
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
2.9 配置远程访问
/*切换数据库*/
use mysql;
select user,host,plugin,authentication_string from mysql.user;
select user,host,plugin from mysql.user;
/*修改root的权限并刷新权限*/
update mysql.user set host='%' where user='root';
flush privileges;
2.10 新建测试账号
create user 'test'@'%' identified by 'test';
/*给test用户授予testdb数据库的所有权限(可远程登陆)*/
grant all privileges on testdb.* to 'test'@'%';
flush privileges;
/*给test用户授予testdb数据库的insert,delete,update权限(可远程登陆)*/
grant select on testdb.* to 'test'@'%';
flush privileges;
/*查看用户的权限*/
show grants for 'test'@'%';
2.11 修改端口(可选)
vi /etc/my.cnf
/* 默认配置不含port行需自行添加,按esc退出INSERT模式 :wq 保存*/
port=6666
/* 重启mysql并查看端口状态 注意:如果是云服务器(如阿里云),一定要检查安全组是否开启相应的端口,不然客户端连不上*/
systemctl restart mysqld
netstat -nlpt
2.12 修改mysql的数据、日志存放路径
/* 先停止msyql*/
systemctl stop mysqld
/* 先创建好要存储的位置*/
mkdir -p /data/mysql
cd /data/mysql
/*把文件移到/data/mysql/文件夹下,cp -a参数是权限也一起复制,然后删除原文件夹*/
cp -a /var/lib/mysql /data/
rm -rf /var/lib/mysql
/*修改软连接*/
ln -s /data/mysql /var/lib/
/*查看软连接*/
ls -la /var/lib/mysql
/*修改my.cnf配置文件*/
datadir=/data/mysql
socket=/data/mysql/mysql.sock
/* 启动msyql*/
systemctl start mysqld
/* 登录mysql,查看数据文件*/
mysql -u root -p
show global variables like "%datadir%";
/* 查看安装路径*/
whereis mysql
/* 查看版本*/
mysql -V
2.13 防火墙配置将3306端口开放
/* 配置将3306端口开放 --permanent永久生效,没有此参数重启后失效*/
firewall-cmd --zone=public --add-port=3306/tcp --permanent
/* 重新载入*/
firewall-cmd --reload
/* 查看*/
firewall-cmd --zone=public --query-port=3306/tcp
/* 查看安装路径*/
vi /etc/sysconfig/iptables
添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
三.常见问题
3.1 常见问题
- 如果客户端连接报错"Authentication plugin ‘caching_sha2_password’ cannot be
loaded",是以为mysql 8的加密方式改了。有两种选择 1、升级客户端 2、把加密方式改为传统的方式
推荐用新的加密方式(一般升级客户端就可以了),老项目代码的话可能有老的jar包等不支持新加密,下面是改为传统加密方式
ALTER mysql.USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';