CentOS7 离线部署MySQL8.0+
Linux离线部署MySQL8.0+
一. 下载安装包和依赖:
- 查看服务器上的glibc版本
rpm -qa|grep glibc
# 输出:
glibc-headers-2.17-326.el7_9.3.x86_64
glibc-common-2.17-326.el7_9.3.x86_64
glibc-devel-2.17-326.el7_9.3.x86_64
glibc-2.17-326.el7_9.3.i686
glibc-2.17-326.el7_9.3.x86_64
- 确定MySQL下班版本
- 下载地址:https://dev.mysql.com/downloads/mysql/
- 根据截图下载MySQL安装包
- 从第一步也能知道glibc的版本是2.17,所以下载的时候要选择2.17版本,如果下载2.28的话,需要更新glibc依赖,比较繁琐
- libaio库的下载,初始化数据库用
-
在安装过程中初始化数据库时,经常会报error while loading shared libraries: libaio.so.1。
-
这是由于缺少libaio库,下载地址:
http://www.rpmfind.net/linux/rpm2html/search.php?query=libaio(x86-64)
二. 安装部署MySQL
- 创建新的用户组和新的用户,用来管理mysql,提高安全性
- 创建用户组
groupadd mysql
- 添加mysql用户 ,并制定组为mysql,/sbin/nologin意思是用户不允许登录
useradd -r -g mysql.mysql -s /sbin/nologin
注意:一定要创建一个非root的用户来安装,mysql不允许以root用户运行
- 上传mysql程序包mysql-8.4.4-linux-glibc2.17-x86_64.tar.xz到/home下
cd /home
tar -Jxf mysql-8.4.4-linux-glibc2.17-x86_64.tar.xz
mv mysql-8.4.4-linux-glibc2.17-x86_64 /usr/local/mysql-8.4.4
- 创建数据存储目录,日志目录和mysqld.log日志文件,并设置读写权限
- 创建data和log目录
mkdir /usr/local/mysql-8.4.4/{datda,logs}
- 创建日志文件
touch /usr/local/mysql-8.4.4/logs/mysqld.log
- 设置data和log目录的读写权限,-R表示整个目录授权
chmod 777 -R /usr/local/mysql-8.4.4/{data,logs}
- 给mysql用户授权能够访问/usr/local/下的mysql-8.4.4文件夹
chown -R mysql.mysql /usr/local/mysql-8.4.4/
- 创建并编辑/etc/my.cnf配置文件
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql-8.4.4
datadir=/usr/local/mysql-8.4.4/data
socket=/usr/local/mysql-8.4.4/mysql.sock
# 开启ip绑定
# bind-address = 0.0.0.0
log_timestamps = SYSTEM
open_files_limit=30000
max_connections=3000
# 控制其通信缓冲区的最大长度
max_allowed_packet=256M
# 设置忽略大小写(简单来说就是sql语句是否严格),默认库名表名保存为小写, 不区分大小写
lower_case_table_names = 1
#
# 开启慢查询
# slow_query_log=on
# slow_query_log_file=/home/mysql-8.4.4/log/slow-query.log
#
[mysqld_safe]
log-error=/usr/local/mysql-8.4.4/logs/mysqld.log
pid-file=/usr/local/mysql-8.4.4/data/mysqld.pid
# 指定客户端连接mysql时的socket通信文件路径
[client]
socket=/usr/local/mysql-8.4.4/mysql.sock
default-character-set=utf8
- 安装libaio库
rpm -ivh libaio-0.3.112-1.el8.x86_64.rpm
7、初始化数据库,在MySQL的安装目录下执行命令
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.4.4/ --datadir=/usr/local/mysql-8.4.4/data
此时会生成一个临时密码 如:CcPcnyCW%3Go【记住此临时密码,下面会用上】,每个人安装部署时产生的临时密码不一致,以初始化数据库打印的临时密码为准
注意:如果需要重新初始化配置,需要将data目录下的文件清空,否则初始化会失败
- 添加至开机启动
- 在mysql5.7.29的目录下执行下列语句,把启动脚本放到开机初始化目录
cp ./support-files/mysql.server /etc/init.d/mysqld
- 设置开机启动,在mysql-5.7.29的目录下执行下列语句(按个人需求选择加或不加)
chkconfig --add mysqld
- 修改mysqld,使用vim /etc/init.d/mysqld 命令
修改以下代码部分,具体以实际路径为准,位置在开始部分第一次出现basedir
、datadir
basedir=/usr/local/mysql-8.4.4
datadir=/usr/local/mysql-8.4.4/data
- 启动mysql服务和修改mysql初始化密码
# 启动
service mysqld start
# 停止
service mysqld stop
# 重启
service mysqld restart
启动的发现报错了,这时候查看3306端口发现端口是被正常监听的,但是停止服务又提示pid不存在,这时候先kill一下,然后再次启动发现OK了
三. 设置MySQL用户密码和远程访问
- 终端访问数据
./bin/mysql -uroot -p -S /home/mysql-5.7.29/mysql.sock
mysql.sock在mysql启动后会自动生成,生成的路径就是/etc/my.cnf配置的路径,root密码为:CcPcnyCW%3Go
- 设置root密码
- 需要先修改密码,不然什么也做不了
alter user 'root'@'localhost' identified by '123456';
# root@localhost是对应MySQL的用户,123456是需要修改的密码。
- 选择数据库
uss mysql;
- 设置远程客户端访问
update user set user.Host='%' where user.User='root';
# 设置用户root的访问地址不受限制
- 执行生效指令
flush privileges;
这里建议设置完成后不要马上退出mysql,先用可视化工具连接测试一下,否则可能连接不上,但是用户名和密码又没错,如果没退出,你还能再次输入通过指令修改root的密码,所以保证连接成功后,在输入exit进行退出。
最后通过可视化工具连接测试成功,自此mysql-8.4.4在Linux环境上安装部署完成~
MySQL8.0+对navicat客户端版本有一定要求,如果用navicat连接数据库,需要将navica升至较新版本。