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';