CentOS 7.8 安装mysql8.0步骤
参考:
https://www.cnblogs.com/yunian139/p/13468465.html
https://blog.csdn.net/gispipi/article/details/106494367
1 安装前清理工作(卸载mysql)
1.1 清理原有的mysql数据库;
使用以下命令查找出安装的mysql软件包和依赖包:
rpm -pa | grep mysql
或者
yum list installed mysql*
使用以下命令依次删除上面的程序
yum remove mysql-xxx-xxx-
删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;
find / -name mysql
根据需求使用以下命令 依次 对配置文件进行删除
1.2 删除MariaDB的文件
由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB.
使用rpm 命令查找出要删除的mariadb文件;
2 安装mysql
2.1 下载软件包rpm文件
文件下载到Centos/usr/local/mysql文件夹下;
cd /usr/local
mkdir mysql
cd mysql
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
2.2 安装 yum repo文件并更新 yum 缓存
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
执行结果:
会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
更新 yum 命令
yum clean all
yum makecache
2.3 使用 yum安装mysql
当我们在使用yum安装mysql时,yum默认会从yum仓库中安装mysql最新的GA版本;如何选择自己的版本;
第一步: 查看mysql yum仓库中mysql版本,使用如下命令
yum repolist all | grep mysql
可以看到 MySQL 5.5 5.6 5.7为禁用状态 而MySQL 8.0为启用状态;
第二步 使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态,根据需要安装的版本修改
yum-config-manager --disable mysql80-community #关闭8.0版本
yum-config-manager --enable mysql57-community #开启5.7版本
2.4 安装mysql
命令如下:
yum install mysql-community-server
2.5 开启mysql 服务
systemctl start mysqld.service
2.6 获取初始密码登录mysql
mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;
cat /var/log/mysqld.log | grep password
A temporary password is generated for root@localhost: ?/rI,c:e-00y
?/rI,c:e-00y 就是密码
使用初始密码登录mysql
mysql -u root -p #会提示输入密码
修改初始密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';#注意位数和种类至少大+写+小写+符号+数字
3.开启mysql远程服务:
外网 Navicat 连接 Mysql
修改mysql数据库下的user表中host的值
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"登录mysql数据库 执行如下命令:
mysql -u root -p
use mysql;
update user set host='%' where user='root';
FLUSH PRIVILEGES;
4.CentOS8 Mysql8 更改数据存储路径(datadir)
4.1 新建数据存放的目录,拷贝原数据库内容到新建目录
新建目录
mkdir /app/mysql
拷贝
cp -a -R /var/lib/mysql/* /app/mysql/
将目录授权给mysql用户组
chown mysql:mysql /app/mysql
4.2 修改mysql配置文件
关掉mysql服务
systemctl stop mysqld.service
修改配置文件,修改datadir socket
vim /etc/my.cnf
修改文件内容
注释原来的配置
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
新增配置
datadir=/app/mysql
socket=/app/mysql/mysql.sock
4.3 重新初始化配置内容
mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
4.4 启动服务
命令如下:
systemctl start mysqld
查看状态
systemctl status mysqld.service
显示如下:
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-05-27 14:57:50 CST; 21min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 5940 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 5966 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─5966 /usr/sbin/mysqld
May 27 14:57:50 gyl-bff-all01 systemd[1]: Starting MySQL Server...
May 27 14:57:50 gyl-bff-all01 systemd[1]: Started MySQL Server.
4.5 用户登录
mysql -uroot -p 输入密码;
提示错误。SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
重新建立连接
ln -s /app/mysql/mysql.sock /var/lib/mysql/mysql.sock (mysql.sock是服务启动时候生成的文件)
4.6 再次登录,成功
查看存储路径
show global variables like '%datadir%';
4.7 mysql8.0 基本命令
mysql -u username -p #登录mysql
quit #退出mysql
systemctl start mysqld.service #启动mysql
systemctl stop mysqld.service #结束
systemctl restart mysqld.service #重启
systemctl enable mysqld.service #开机自启
select version(); #查看mysql版本
4.8 Navicat 连接MySQL 8.0.11 出现2059错误
ALTER USER 'user'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;