CentOS离线安装MySQL
下载MySQL
下载链接:https://dev.mysql.com/downloads/mysql/
如下图所示,选择我们需要的版本点击**
Download
下载,当提示我们进行登录时,可选择
No thanks, just start my download.
**不登录,直接进行下载
安装MySQL
上传安装包
将下载的安装包**
mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
**上传至服务上
解压安装包
解压上传的安装包
将解压后的包进行重命名(后面MySQL安装路径)
创建MySQL日志目录
cd mysql8/
mkdir data
配置MySQL环境变量
vim /etc/profile
MYSQL_HOME=/home/mysql/mysql8/bin
PATH=$PATH:$MYSQL_HOME
export MYSQL_HOME PATH
配置完成后生效环境变量:
source /etc/profile
创建MySQL用户组及用户
groupadd mysql
useradd -g mysql mysql
更新MySQL安装目录权限
chmod -R 775 mysql8
安装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
如下图所示,执行输出的最后(红色框标识)为数据库登录的临时密码,请记得保存:
注意:
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
如下图所示,修改以下信息:
添加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';