00 MySQL 8.0.36 离线安装(基于CentOS 7 x86_64)
1. 前言
1.1. CentOS6和CentOS7在MySQL的使用中的区别
防火墙: 6是 iptables
,7是 firewalld
启动服务的命令: 6是 service
,7是 systemctl
1.2. 查看是否安装过MySQL
📣📣📣若未安装请跳过此步骤~
1.2.1. 检查 RPM PACKAGE
此步骤,只适用于 rpm
安装
# -i:忽略大小写
rpm -qa | grep -i mysql
1.2.2. 检查 mysql service
systemctl status mysqld.service
1.2.3. 检查 mysql-libs 旧版本包
rpm -qa | grep -i mysql
1.3 卸载MySQL
📣📣📣若未安装请跳过此步骤~
1.3.1. 关闭mysql服务
systemctl stop mysqld.service
1.3.2. 查看mysql安装情况
rpm -qa | grep -i mysql
# 或
yum list installed | grep mysql
1.3.3. 卸载上述命令查询出的已安装程序
yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx
📣📣📣务必卸载干净,反复执行 rpm -qa | grep -i mysql
确认是否有卸载残留。
1.3.4. 删除mysql相关文件
查找相关文件
find / -name mysql
删除上述命令查找出的相关文件
rm -rf xxx
1.3.5. 删除 my.cnf
rm -rf /etc/my.cnf
2. 下载
2.1. 官网
地址: MySQL
2.2. DOWNLOADS
2.3. MySQL的三大版本
2.3.1. MySQL Enterprise Edition
企业版本(付费)
2.3.2. MySQL Cluster CGE
高级集群版(收费)
2.3.3. MySQL Community Server
社区版(开源免费)
2.4. 下载
📣个人使用,选择 社区版 即可~
选择 MySQL
稳定版和适配系统
选择 RPM Bundle
下载
点击 No thanks, just start my download.
下载即可~
下载后见下图:
解压后见下图
3. 安装
3.1. 准备工作
登录服务器: root
账户
3.1.1. 目录授权 /opt
用于个人账户有权限存放软件安装包。
chmod 777 /opt
3.1.2. 目录授权 /tmp
MySQL
安装过程中,会通过 MySQL
用户在 /tmp
目录下新建 tmp_db
文件。
chmod -R 777 /tmp
3.1.3. 检查必要依赖
# 查询libaio
rpm -qa|grep libaio
# 查询net-tools
rpm -qa|grep net-tools
如果本地的 Linux
没有 libaio
和 net-tools
,则需要安装。
# 安装libaio
yum install libaio-devel
# 安装net-tools
yum install net-tools
3.1.4. 删除 mysql-libs
MySQL
与 mysql-libs
有冲突,所以需要提前删除。
# 删除 mysql-libs
yum remove mysql-libs
# 或者
rpm -e mariadb-libs --nodeps
3.2. 拷贝MySQL安装包到服务器
😄个人习惯: root
账户只做管理;个人账户(eyesmoon
)执行具体操作。
登录账户: eyesmoon
3.2.1. 新建mysql文件夹
mkdir /opt/mysql/
3.2.2. 拷贝安装包到服务器
将 mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar
拷贝到 /opt/mysql/
目录下。
3.2.3. 解压安装包
# 新建解压目录
mkdir /opt/mysql/mysql-8.0.36
# tar -xvf [压缩包.tar] -C [解压到目标路径]
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql/mysql-8.0.36/
3.3. 开始安装
rpm: Redhat Package Manage
缩写,通过 RPM
的管理,用户可以把源代码包装成以 rpm
为扩展名的文件形式,易于安装。
缩写 | 简述 |
---|---|
-i | --install 安装软件包 |
-v | --verbose 提供更多的详细信息输出 |
-h | --hash 软件包安装的时候列出哈希标记 (和 -v 一起使用效果更好),展示进度条。 |
⚠️⚠️⚠️执行安装命令,严格按照顺序!!!
此处需要使用 root
权限~
3.3.1. mysql-community-common
sudo rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
3.3.2. mysql-community-client-plugins
sudo rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
3.3.3. mysql-community-libs
sudo rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
3.3.4. mysql-community-client
sudo rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
3.3.5. mysql-community-icu-data-files
sudo rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
3.3.6. mysql-community-server
sudo rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
此时安装完毕!
4. 校验
4.1. 检查是否安装成功
# 语法: -i:不用区分大小写。一定加上[-i],否则搜不到。
rpm -qa|grep -i mysql
4.2. 查看MySQL版本
# 查询 mysql版本信息
mysql --version
# 或者
mysqladmin --version
5. 服务初始化
为了保证数据库目录与文件的所有者为 mysql
登录用户,需要使用 root
权限运行 mysql
服务,执行下面的命令初始化:
sudo mysqld --initialize --user=mysql
说明: --initialize
选项默认以 【安全】 模式来初始化。为 root
用户生成一个密码并 将该密码标记为过期 。登录后需要设置一个新的密码,生成的 临时密码 会记录在日志中。
# 语法:查看密码
sudo cat /var/log/mysqld.log
6. MySQL服务启动
mysqld
这个可执行文件就代表着 MySQL
服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。
6.1. 查看服务状态
systemctl status mysqld
6.2. 启动服务
需要使用 root
权限~
# 启动mysql
sudo systemctl start mysqld
# 查看状态
systemctl status mysqld
6.3. 停止服务
需要使用 root
权限~
# 停止mysql
sudo systemctl stop mysqld.service
# 查看状态
systemctl status mysqld
6.4. 重启服务
需要使用 root
权限~
sudo systemctl restart mysqld.service
6.5. 查看进程
ps -ef | grep -i mysql
7. MySQL服务自启动
7.1. 查看是否自启动
systemctl list-unit-files | grep mysqld.service
默认: enabled
自启动。
7.2. 设置自启动
需要使用 root
权限~
sudo systemctl enable mysqld.service
7.3. 关闭自启动
需要使用 root
权限~
sudo systemctl disable mysqld.service
8. MySQL登录
8.1. 首次登录
mysql -hlocalhost -P3306 -uroot -p
在 Enter password:
录入初始化密码
8.2. 修改密码
因为初始化密码默认是过期的,所以查看数据库会报错。
# 语法:ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
更改密码时,设置新密码太简单 有可能 会报错。如果报错,改为更复杂的密码之后,可以正常使用数据库了。
9. 远程登录
9.1. 连接超时问题
本文以 DBeaver
为例。配置远程连接 Mysql
数据库时遇到如下报错信息,这是由于 Mysql
配置了不支持远程连接引起的。
9.1.1. 检查网络
确认 远程服务器 和 数据库服务器 网络畅通。
# 语法:ping [IP]
ping 192.168.192.128
9.1.2. 检查端口号
确认 远程服务器 可以正常访问 数据库服务器 3306
端口
# 语法:telnet ip地址 端口号
telnet 192.168.192.128 3306
📣📣📣如果telnet命令未开启,请查看文章:04 telnet客户端详解
出现如下图连接失败问题,说明 数据库服务器 3306
端口没有开放。
如下提供两种解决办法:
9.1.2.1. 关闭防火墙(不推荐)
需要使用 root
权限~
sudo systemctl stop firewalld
详细防火墙命令请查看文章:03 CentOS 7:防火墙常用命令
9.1.2.2. 开放3306端口(推荐)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
详细防火墙命令请查看文章:03 CentOS 7:防火墙常用命令
9.1.2.3. 刷新防火墙的设置
📣📣📣更新防火墙的设置,使上面的修改生效
需要使用 root
权限~
sudo firewall-cmd --reload
9.1.3 MySQL服务器登陆配置
在 MySQL 服务器登录进数据库:
mysql -hlocalhost -P3306 -uroot -p
use mysql;
select Host,User from user;
可以看到 root
用户的当前主机配置信息为 localhost
。需要将 localhost
修改为通配符 %
。
Host
列指定了允许用户登录所使用的 IP
,比如 user=root
, Host=192.168.1.1
。这里的意思就是说 root
用户只能通过 192.168.1.1
的客户端去访问。 user=root
、 Host=localhost
,表示只能通过本机客户端去访问。
而 %
是个通配符 ,如果 Host=192.168.1.%
,那么就表示只要是 IP
地址前缀为 192.168.1.
的客户端都可以连接。如果 Host=%
,表示所有 IP
都有连接权限。
⚠️⚠️⚠️注意: 在生产环境下不能为了省事将 Host
设置为 %
,这样做会存在安全问题,具体的设置可以根据生产环境的 IP
进行设置。
# 将root用户的 Host列 `localhost` 修改为通配符 `%`
update user set host = '%' where user ='root';
📣📣📣Host
修改完成后记得执行 flush privileges;
使配置立即生效。
flush privileges;
9.2. 不允许检索公钥问题
9.2.1. 修改驱动属性
驱动属性 中修改 allowPublicKeyRetrieval=true
。
参数修改为后可以再次修改为 false
,但是这样每次建立新连接的时候都需要修改为true
。
本文隶属于 个人专栏
:02 MySQL📋📋📋
到这里 00 MySQL 8.0.36 离线安装(基于CentOS 7 x86_64) 就结束了!!!🎉🎉🎉
欢迎小伙伴们学习和指正!!!😊😊😊
祝大家学习和工作一切顺利!!!😎😎😎