CentOS离线安装MySQL

符号 阅读:166 2022-06-06 14:04:48 评论:0

CentOS离线安装MySQL

下载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日志目录

cd mysql8/ 
mkdir data 

image-20210709151902229

配置MySQL环境变量

vim /etc/profile 
MYSQL_HOME=/home/mysql/mysql8/bin 
PATH=$PATH:$MYSQL_HOME 
export MYSQL_HOME PATH 

image-20210709152040835

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

source /etc/profile 

创建MySQL用户组及用户

groupadd mysql 
useradd -g mysql mysql 

image-20210709152302160

更新MySQL安装目录权限

chmod -R 775 mysql8 

image-20210709152514365

安装libaio依赖包

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

# 查询是否安装libaio依赖包 
yum search libaio 
 
# 若没安装,使用以下命令安装 
yum install libaio 

初始化MySQL

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参数

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

修改MySQL配置文件

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

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

image-20210709153734265

添加MySQL自启动

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文件

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

内容如下:

[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文件权限

chown mysql:mysql my.cnf 
chown mysql my.cnf 
chmod 755 my.cnf 

启动服务

# 查看服务 
service mysqld status 
# 停止服务 
service mysqld stop 
# 启动服务 
service mysqld start 

初始化密码

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

关闭防火墙

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

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

错误处理

错误1:libtinfo.so.5

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

解决方式:

yum install libncurses* 

错误2:客户端无法连接

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

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

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

# 登录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'; 

标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号