【mysql】centOS7安装mysql详细操作步骤!—通过tar包方式
【mysql】centOS7安装mysql详细操作步骤!
linux系统安装mysql版本
需要 root 权限,使用 root 用户进行命令操作。使用tar文件包,安装,gz包也可以但是还需要配置用户,tar包虽然大,但是全啊!
1. 检查并卸载旧版本 MySQL(如果有)删除配置文件
查询是否存在 MariaDB 相关安装包,MariaDB 是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB 的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
rpm -qa | grep mariadb
# 删除已经安装的mariadb,通过上面查询得到的文件名为:mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
# 再查询是否存在 MariaDB 相关安装包
rpm -qa | grep mariadb
# 查看正在运行的 MySQL 服务
在安装新版本之前,需要确认系统中是否存在旧版本的 MySQL 并将其卸载。
# 查看是否安装了旧版本 MySQL
rpm -qa | grep mysql
# 如果有相关包,使用以下命令卸载,例如
sudo yum remove mysql*
# 查看系统版本
cat /etc/os-release
# 查看是x86_64,还是arm
uname -m
查看正在运行的 MySQL 服务
ps axj | grep mysql
存在正在运行的 MySQL 服务,停止 MySQL 服务
systemctl stop mysqld
查看 MySQL 服务状态
systemctl status mysqld
查询是否存在 MySQL 相关安装文件
find / -name mysql
存在 MySQL 相关安装文件,全部删除
rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /export/server/mysql
# 再次,查询是否存在 MySQL 相关安装文件
find / -name mysql
删除 MySQL 相关配置文件
rm -rf /etc/my.cnf /etc/init.d/mysql /etc/init.d/mysqld
删除 mysql 用户和用户组
userdel mysql
groupdel mysql
2. 下载MySQL +上传centOS7
访问 MySQL 官方下载页面(https://downloads.mysql.com/archives/community/),找到适合【选择系统,选择版本】
我用的下载链接是:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar,8.036版本
下载完成后,上传centOS7 ,我通过rz命令上传的!
# 创建目录
mkdir -p /export/server/mysql
# 进入目录
cd /export/server/mysql
# 上传
rz 选择文件
# 解压到这个目录,.tar 格式的为打包不压缩,使用 tar -xvf,解压后是相关的文件,不是目录。
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -C /export/server/mysql
# 查看解压后的情况
ls -l /export/server/mysql
3. 安装依赖+安装rpm包
安装 openssl 和 openssl-devel,OpenSSL库是用于加密和解密数据的库,MySQL在安全通信时需要使用OpenSSL库。
yum -y install openssl openssl-devel
安装 libaio ,libaio库是Linux异步I/O操作的库,MySQL在进行I/O操作时需要使用libaio库。
yum -y install libaio
安装ncurses,ncurses库是用于控制终端输出的库,MySQL的终端工具需要使用ncurses库。
yum -y install libncurses*
进入目录 /export/server/mysql,查看目录内容
cd /export/server/mysql
ls -l
依次执行以下命令,依次安装 /export/server/mysql 目录下的各个.rpm文件,一定要注意安装顺序,要不然安装不上!
rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
下面这些不用安装
mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar # 原来的包不用安装
mysql-community-test-8.0.36-1.el7.x86_64.rpm # 测试包
mysql-community-server-debug-8.0.36-1.el7.x86_64.rpm # debug
mysql-community-debuginfo-8.0.36-1.el7.x86_64.rpm # debuginfo
4. 配置 MySQL
修改配置文件 /etc/my.cnf,在 [mysqld] 中增加配置内容
vim /etc/my.cnf
增加的配置内容以下
# 设置 MySQL 服务运行的端口号
port=3306
# 指定 MySQL 数据库的默认字符集
character-set-server=utf8mb4
# 允许外部访问
bind-address=0.0.0.0
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 设置 MySQL 允许访问的最大连接数
max_connections=1000
# 指定MySQL服务器存储数据文件的目录
datadir=/var/lib/mysql
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
目录授权,初始化,生成root用户
# 清空目录
sudo rm -rf /var/lib/mysql/*
# 授权
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
# 初始化mysql数据库
sudo mysqld --initialize --user=mysql
[mysqld]
port=3306
character-set-server=utf8mb4
bind-address=0.0.0.0
init_connect='SET NAMES utf8mb4'
max_connections=1000
datadir=/var/lib/mysql
lower_case_table_names=1
transaction_isolation=READ-COMMITTED
explicit_defaults_for_timestamp=true
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
5. 启动 MySQL
【MySQL 安装完成后,会自动配置名称为 mysqld 的服务,可以被 systemctl 管理。】
启动 MySQL 服务
sudo systemctl start mysqld.service
查看 MySQL 服务
systemctl status mysqld.service
查看 MySQL 服务进程
ps axj | grep mysqld
设置 MySQL 服务开机自动启动
systemctl enable mysqld.service
6. 登录 MySQL
- 方式1:
获取临时密码进行登录
获取 MySQL 日志文件的路径,查看配置文件 /etc/my.cnf 中的 log-error 的内容 /var/log/mysqld.log 就是 MySQL 日志文件的路径
cat /etc/my.cnf
再查看 MySQL 日志文件 /var/log/mysqld.log,使用通道符按关键字直接检索,获取临时密码
grep "temporary password" /var/log/mysqld.log
登录 MySQL
mysql -u root -p
不修改密码,不允许执行SQL命令。
修改密码,MySQL默认的密码策略是要包含大写字母、小写字母、数字、特殊字符,长度大于8位
alter user 'root'@'localhost' identified by '复杂的密码';
退出 MySQL
exit;
重新登录 MySQL,使用修改后的密码
mysql -u root -p
- 方式2:
跳过密码验证进行登录。不推荐。除非通过方式1获取不到临时密码,或者使用过程中忘记密码了。
修改 /etc/my.cnf 配置文件,在 [mysqld] 后面任意一行添加 skip-grant-tables
vim /etc/my.cnf
重启 MySQL
systemctl restart mysqld
登录 MySQL(无 -p 选项,无需密码登录)
mysql -u root
刷新权限 ,需要刷新权限之后才能修改密码
flush privileges;
修改密码,MySQL默认的密码策略是要包含大写字母、小写字母、数字、特殊字符,长度大于8位
alter user 'root'@'localhost' identified by '复杂的密码';
退出 MySQL
exit;
再修改 /etc/my.cnf 配置文件,将 skip-grant-tables 这行注释或删除掉
vim /etc/my.cnf
重启 MySQL
systemctl restart mysqld
7. 开放端口
查看 MySQL 服务监听哪些端口
netstat -nap | grep mysqld
检查端口是否开放
firewall-cmd --zone=public --query-port=3306/tcp
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新加载
firewall-cmd --reload
# 再检查端口是否开放
firewall-cmd --zone=public --query-port=3306/tcp
8. 设置远程登录
MySQL8默认只能本地连接,不允许远程终端连接
登录 MySQL,新建 root_rw 用户,允许在远程终端(192.168.88.1)上远程登录, % 代表所有终端
mysql -u root -p
create user 'rw'@'192.168.88.1' identified by '复杂的密码';
# create user 'rw'@'%' identified by '复杂的密码';
授予权限(最大权限)
grant all privileges on *.* to 'rw'@'192.168.88.1';
# grant all privileges on *.* to 'rw'@'%';
刷新权限
flush privileges;
查看用户情况
SELECT host, user FROM mysql.user
9. 测试远程登录
可以使用SQLyog, Navicate, DataGrip 等工具链接测试!
10. 删除安装文件
删除安装包文件
rm -rf /root/mysql-8.4.3-1.el7.x86_64.rpm-bundle.tar
删除安装包解压的安装目录
rm -rf /export/server/mysql
如果出现不是东八区时间,可以
select now(); # SET time_zone = '+08:00'; SET GLOBAL time_zone = '+08:00';