CentOS离线安装MySQL

  • Post author:
  • Post category:mysql




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



版权声明:本文为weixin_49192027原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。