应公司要求Centos停止维护需要把原有业务迁移到rocky上面,在运维人员下发了机器后,经历了重重困难,终于把mysql8.0.39安装完成了,接下来把我遇到的问题及安装步骤例举出来;
一、下载mysql8.0.39安装包
官方下载地址:MySQL :: Download MySQL Community Server
这里我选择的是.xz格式的包。
根据自己的Rocky 版本号,去选择对应的版本下载,没办法截图下拉列表框中间的版本号,直接通过代码,给大家看下对应的版本。
如果有兄弟不知道自己下载什么版本时候,麻烦自己在服务器里面查看应版本号,我在安装mysql的过程中,因为疏忽了,下载了不同的版本,导致安装失败,又重新卸载了。
ldd --version #查看对应版本号
如果想知道自己是x86_64还是x86_32,可以通过如下代码
uname -m
二、开始升级操作
#我的安装目录放在了local下面,接下来进入安装目录
cd /usr/local
#创建mysql 文件夹
mkdir mysql
#给予mysql文件夹权限
chmod 755 /usr/local/mysql/
#进入mysql目录
cd /usr/local/mysql
#把当前通过ftp上传的压缩包copy到当前目录(这步每个人可能都不一样,因为我没有上传文件的权限,只能通#过运维人员上传到我用户使用的目录,然后copy到mysql目录下,如果不需要这步的可以跳过)
cp /xx/xx/mysql-8.0.39-linux-glibc2.28-x86_64.tar /usr/local/mysql/
#解压当前文件
tar -xvf mysql-8.0.39-linux-glibc2.28-x86_64.tar
1.解压完成后,会获得如下三个压缩文件夹,继续解压
tar -Jxvf mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz
#解压完后把解压后的文件夹名称变更成mysql-8.0
mv mysql-8.0.39-linux-glibc2.17-x86_64 mysql-8.0
2.接下来,创建自己需要存放的data、log、tmp等目录,为了后续好做mysql版本升级等服务,在这里分别把三个目录,都放在了其他地方 data放在了根目录,log跟方在了mysql-8.0下面,tmp放在了根目录。
3.创建mysql 用户组和用户
groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql/
4.初始化数据库
#初始化之前,一定要确认自己的目录是否正确,不要复制代码直接用,如果目录一致没问题,目录不一样,就会报错。记得修改目录
./mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql/mysql-8.0 --datadir=/usr/local/mysql/mysql-8.0/data/ --initialize
5.在这里会给你们一个临时密码,可以用临时密码登录,如果未记录临时密码,做如下操作:
#进入/etx目录
cd /etc
vi my.cnf
#如果没有my.cnf文件已经不要慌。我们自己重新创建一个进入编辑模式。
vi my.cnf
:wq!
#创建完成后,我们写入my.cnf文件内容
[mysqld]
user = mysql
basedir = 刚刚mysql安装目录
datadir = 刚刚新建的存放data的目录
log-error = 刚刚新建存放log的目录
pid-file = /mysql安装目录/data/mysql.pid
socket = /刚刚新建tmp目录/mysql.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1
#这行代码,是mysql在没有临时密码或者临时密码登录报错的情况下的设置的,用于root账号不需要密码校验,后续更改密码后,记得把这个注释掉 start
skip-grant-tables
# end
slow-query-log = 1
slow-query-log-file = /刚刚新建存放log的目录/mysql-slow.log
skip-external-locking=on
[mysqld_safe]
open-files-limit = 8192
[mysqldump]
max_allowed_packet= 400M
上述目录,一定要仔细检查认证,不然mysql 是启动不起来的。
#把刚刚mysql-8.0文件夹、/etc/my.cnf 都给到mysql用户组和root用户组权限。(这里注意,如果你的用户组,不叫mysql,或者不是root。根据自己实际情况来给予用户组权限。不然会重启不起来)
chown -R root:root /usr/local/mysql/mysql-8.0
chown -R mysql:mysql /usr/local/mysql/mysql-8.0
sudo chmod 644 /etc/my.cnf
sudo chown mysql:mysql /etc/my.cnf
sudo chown root:root /etc/my.cnf
#回到mysql 安装目录,添加服务
cd /usr/local/mysql/mysql8.0/
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
启动mysql
service mysql start
如果启动报错,建议检查下my.cnf文件。
进入bin目录
#根据自己目录结构,进入刚刚按照的mysql,bin目录
cd /xx/xx/xx/mysql-8.0/bin
#执行如下代码时,有临时密码在-p后面输入临时密码,如果没有临时密码,就在my.cnf上面添加不需要验证密码的配置参数;
./mysql -uroot -p
#选择数据库
use mysql;
#修改root用户登录密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
flush privileges;
#如果修改密码报如下错误The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 请执行下面的代码 start
#关闭住库只读属性
set global read_only=0;
flush privileges;
SET SESSION binlog_format = 'ROW';
SET GLOBAL binlog_format = 'ROW';
#end,执行这段代码结束后,重新做修改密码操作;
#设置远程链接。
update user set host='%' where user = 'root';
flush privileges;
本次在Rocky环境下,安装mysql 结束了。
延伸问题
此次安装完成后,因为是从Linux转Rocky机器是新下发的,当我论证完上面的内容后,远程链接也设置好后,去用navicat链接数据库的时候,报了错误。因为防火墙没有开3306的端口,所以在这里可能需要对新下发的机器,开通3306的端口;
firewall-cmd --zone=public --add-port=3306/tcp --permanent