Centos7 yum方式安装mysql8

Centos7 yum方式安装mysql8

1.如果之前安装过或者系统默认安装了MariaDB,需要先卸载
rpm -qa |grep mariadb
yum -y remove mariadb*

再检查是否有手动安装过 mysql ,如果有,也需要删除
rpm -qa |grep mysql
rpm -e xxx

find / -name mysql
删除对应目录
rm- -rf xxx 


2.下载 mysql 8.0 comunity 包
wget https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
如果下载慢的话,可以用国内地址下载:
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-8.0-community-el7-x86_64/mysql80-community-release-el7-6.noarch.rpm --no-check-certificate
rpm -ivh mysql80-community-release-el7-6.noarch.rpm

安装完以后,就会在 /etc/yum.repos.d目录下生成几个mysql相关的repos:
mysql-community.repo
mysql-community-source.repo


3.配置yum源

1)先备份Centos-Base.repo,然后从阿里云下载centos7-repo:

mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.ori
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo.aliyun
cp CentOS-Base.repo.aliyun /etc/yum.repos.d/CentOS-Base.repo

下面两部操作不是必须的,可以选择是否执行,清除缓存和重新生成缓存
yum clean all
yum makecache

2)修改 mysql-community.repo 

vi /etc/yum.repos.d/mysql-community.repo

修改 [mysql80-community] 对应的配置参数:

enabled=1
gpgcheck=0

说明:
enabled=1   # enabled表示当前仓库是否开启,1为开启,0为关闭,此项不写默认为开启,确认已经为1
gpgcheck=0    # 改为0不校验,gpgcheck表示安装rpm包时,是否基于公私钥对匹配包的安全信息,1表示开启,0表示关闭,此项不写默认为验证

4.直接使用yum安装mysql8
yum -y install mysql-community-server

5.启动并查看状态
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

如果启动失败,查看日志  cat /var/log/mysqld.log
如果启动报错:
2023-09-29T12:18:46.865530Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
网上找资料说是容器内安装mysql8 如果设置了 lower-case-table-names = 1  就会导致该问题。但我 vi /etc/my.cnf 确认并未设置该参数,参数未设置默认应该等同于0才对。
我是在docker容器内部安装mysql8,遇到了上面的问题。尝试多种方法都没有解决。最终直接在容器内部卸载 & 重装 mysql8。

卸载mysql8:
yum remove mysql-community-server
rm -rf /var/lib/mysql/*

find  / -name mysql
rm /usr/lib64/mysql
rm /var/lib/mysql


重新安装mysql8
echo "" > /var/log/mysqld.log 
yum -y install mysql-community-server

启动mysql8
systemctl start mysqld
注意:我再容器内启动的过程很长,终端看起来像卡主了,最初我通过 ctrl+c 中止了启动,从而导致问题,重启会失败。如果是在容器内,这里可以多等一段时间。
同时可以新开一个窗口进入容器查看启动日志: tail -100f /var/log/mysqld.log 可以观察到启动过程是否故障或完成,只要没有发生ERROR,可以多等一段时间,最终能启动成功。


6.设置mysql新密码并重启服务
安装初始为随机密码,需要修改方便好记
grep "temporary password" /var/log/mysqld.log
mysql -uroot -p
mysql> alter user 'root'@'localhost' identified by 'Abcd_12345678';
mysql> flush privileges;
mysql> quit;


查看表大写配置:
mysql> show variables like '%lower_case_table_names%';

如果需要配置root允许远程连接MySQL(默认近允许本地连接 'root@localhost')

create user 'root'@'%' identified by 'password';
grant all privileges on *.* to 'root'@'%' WITH GRANT OPTION;
flush privileges;

修改密码:
alter user 'root'@'%' identified by 'password_new' ;

如果数据库连接工具连接MySQL Server出现 2059 - authentication plugin 'caching_sha2_password' -navicat 解决方式:

这个错误的原因是由于 MySQL 8.0 之后的加密规则为 caching_sha2_password。而在此之前的加密规则为 mysql_native_password。

可以将MySQL Server端的加密规则改成 mysql_native_password,然后客户端再连接:

mysql -u root -p

修改加密规则:
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

刷新权限:
FLUSH PRIVILEGES;

重置密码:
alter user 'root'@'%' identified by 'password';

你可能感兴趣的:(数据库,mysql,mysql8)