CentOS离线安装MySQL

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/5262242b/

下载MySQL

下载链接:https://dev.mysql.com/downloads/mysql/

如下图所示,选择我们需要的版本点击**Download下载,当提示我们进行登录时,可选择No thanks, just start my download.**不登录,直接进行下载

image-20210709145438041

image-20210709150102873

安装MySQL

上传安装包

将下载的安装包**mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz**上传至服务上

image-20210709150531884

解压安装包

解压上传的安装包

image-20210709151041220

将解压后的包进行重命名(后面MySQL安装路径)

image-20210709151331689

image-20210709151447809

创建MySQL日志目录

1
2
cd mysql8/
mkdir data

image-20210709151902229

配置MySQL环境变量

1
2
3
4
vim /etc/profile
MYSQL_HOME=/home/mysql/mysql8/bin
PATH=$PATH:$MYSQL_HOME
export MYSQL_HOME PATH

image-20210709152040835

配置完成后生效环境变量:

1
source /etc/profile

创建MySQL用户组及用户

1
2
groupadd mysql
useradd -g mysql mysql

image-20210709152302160

更新MySQL安装目录权限

1
chmod -R 775 mysql8

image-20210709152514365

安装libaio依赖包

Linux下异步IO,安装MySQL需使用到此包,若没有需进行安装

1
2
3
4
5
# 查询是否安装libaio依赖包
yum search libaio

# 若没安装,使用以下命令安装
yum install libaio

初始化MySQL

1
mysqld --user=mysql --basedir=/home/mysql/mysql8 --datadir=/home/mysql/mysql8/data --initialize

如下图所示,执行输出的最后(红色框标识)为数据库登录的临时密码,请记得保存:

image-20210709153200197
注意:
Linux中MySQL初始化时默认lower_case_table_names=0,即区分大小写,且在MySQL8中LOWER_CASE_TABLE_NAMES只能在初始化服务器时配置,禁止在服务器初始化后更改LOWER_CASE_TABLE_NAMES设置。
而一般情况下,我们都会将此值设为1,即不区分大小写,如果不一致,在启动服务时会报错(Different lower_case_table_names settings for server (‘0’) and data dictionary (‘1’)),那么我们就需要注意:

  • 初始化时指定lower_case_table_names=1参数

    1
    mysqld --user=mysql --basedir=/home/mysql/mysql8 --datadir=/home/mysql/mysql8/data --initialize --lower_case_table_names=1
  • 后面若有修改此参数值,删除data目录下文件,重新进行下初始化

修改MySQL配置文件

1
vim /home/mysql/mysql8/support-files/mysql.server

如下图所示,修改以下信息:

image-20210709153734265

添加MySQL自启动

1
2
3
4
5
6
7
8
cp /home/mysql/mysql8/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

# 将mysql服务加到系统服务中
chkconfig --add mysqld

# 开机自启动
chkconfig mysqld on

修改my.cnf文件

1
2
# 若无此文件,直接创建
vim /etc/my.cnf

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
basedir=/home/mysql/mysql8
datadir=/home/mysql/mysql8/data
socket=/tmp/mysql.sock
user=mysql
port=3306
character_set_server=utf8
# symbolic-links=0
bind-address=0.0.0.0
lower_case_table_names=1 # 0 区分大小写 1 不区分大小写
default-time-zone = '+8:00'

[mysqld_safe]
log-error=/home/mysql/mysql8/data/error.log
pid-file=/home/mysql/mysql8/data/mysqld.pid
tmpdir=/tmp

修改my.cnf文件权限

1
2
3
chown mysql:mysql my.cnf
chown mysql my.cnf
chmod 755 my.cnf

启动服务

1
2
3
4
5
6
# 查看服务
service mysqld status
# 停止服务
service mysqld stop
# 启动服务
service mysqld start

初始化密码

1
2
3
4
# 修改初始密码
alter user 'root'@'localhost' identified by 'root';
# 刷新
flush privileges;

关闭防火墙

实际生产环境应是开放对应端口(如:3306),而不是直接关闭防火墙

1
2
3
4
# 禁用,禁止开机启动
systemctl disable firewalld
# 停止运行
systemctl stop firewalld

错误处理

错误1:libtinfo.so.5

1
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

解决方式:

1
yum install libncurses*

错误2:客户端无法连接

mysql8.0版更换了新的身份验证是(caching_sha2_password)之前身份验证是(mysql_native_password)

Navicat,和SQLyog客户端软件其实是不支持新的身份验证,也就是说新的身份验证找不到(caching_sha2_password)

既然知道了是这个问题,那么我们就把登录密码加密规则改回(mysql_native_password)即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录MySQL
mysql -uroot -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 'root';

蚂蚁再小也是肉🥩!


CentOS离线安装MySQL
http://heibanbai.com.cn/posts/5262242b/
作者
黑伴白
发布于
2021年7月9日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付