坦诚地说,本文中百分之九十的内容都来自于该文章🔗Linux:CentOS7安装MySQL8(详),十分佩服大佬文章结构合理,文笔清晰,我曾经在这篇文章指导下成功安装mysql。今天,想把内容搬运写到此博客,方便查看。
Centos7安装MySQL
文章目录
1、安装工作
1.1、卸载 MariaDB
1.1.1、MariaDB
MySQL 的一个分支,主要由开源社区维护。
CentOS 7+
不再默认使用 MySQL 数据库,而是 MariaDB 数据库。- 直接安装 MySQL 会与 MariaDB 的文件冲突。
安装 MySQL 之前,先卸载自带的 MariaDB。
1.1.2、卸载
查看版本:有则需要卸载。
rpm -qa|grep mariadb
卸载:复制文件名,执行以下指令。
rpm -e --nodeps 文件名
确认卸载:
rpm -qa|grep mariadb
[root@VM-4-17-centos myredis]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@VM-4-17-centos myredis]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@VM-4-17-centos myredis]# rpm -qa|grep mariadb
1.2、下载资源包
将 MySQL 资源包放在
/usr/local/
下
1.2.1、官网下载
https://downloads.mysql.com/archives/community/
1.2.2、wget 下载
在 /usr/local/
下执行,下载资源包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
1.3、检查旧版本 MySQL
rpm -qa|grep mysql
-
没有输出:说明当前系统没有安装 MySQL,开始安装。
-
有输出:显示的 MySQL 不是想要的版本,则卸载。
停止服务
systemctl stop mysqld
卸载
rpm -e --nodeps mysql文件名
1.4、解压安装
解压:tar 指令。
# .tar.gz 后缀
tar -zxvf 文件名
# .tar.xz 后缀
tar -Jxvf 文件名
解压完成:/usr/local/
下会生成 MySQL 文件夹。
2、配置工作
2.1、基本设置
2.1.1、文件夹重命名
重命名 MySQL 文件夹
mv 原文件夹名 mysql8
2.1.2、PATH 变量
vim /etc/profile
在最下面追加
export PATH=$PATH:/usr/local/mysql8/bin
重载环境变量
source /etc/profile
2.1.3、确认安装
查看版本
mysql --version
确定 MySQL 安装成功后,可删除压缩包。
rm -rf 压缩包名
2.2、创建用户组、用户
注:需要进入
/usr/local
创建用户组:groupadd
groupadd mysql
创建用户:useradd
(-r
创建系统用户,-g
指定用户组)
useradd -r -g mysql mysql
2.3、数据目录
创建目录:
mkdir -p /data/mysql8_data
赋予权限:
更改属主和数组
chown -R mysql:mysql /data/mysql8_data
更改模式 只有具有 root 权限的用户和 mysql 用户可以读取、写入和执行
chmod -R 700 /data/mysql8_data
3、初始化 & 启动
3.1、配置文件
在 /usr/local/etc/
下创建 my.cnf
配置文件用于初始化 MySQL 数据库
[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
# 客户端使用的端口号
port=3306
# 客户端连接的 socket 路径
socket=/tmp/mysql.sock
[mysqld]
# 服务端使用的端口号
port=3306
# 服务器 ID
server-id=3306
# MySQL 运行用户
user=mysql
# 日志时间系统时间
log_timestamps=SYSTEM
# 默认时区东八区
default-time_zone='+8:00'
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 服务器连接的 socket 路径
socket=/tmp/mysql.sock
# MySQL 安装目录
basedir=/usr/local/mysql8
# 数据存放目录
datadir=/data/mysql8_data/mysql
# 开启二进制日志功能
log-bin=/data/mysql8_data/mysql/mysql-bin
# InnoDB 数据文件存放目录
innodb_data_home_dir=/data/mysql8_data/mysql
# InnoDB 日志文件存放目录
innodb_log_group_home_dir=/data/mysql8_data/mysql
# MySQL 错误日志文件路径
log-error=/data/mysql8_data/mysql/mysql.log
# 存放 MySQL 进程 ID 的文件路径
pid-file=/data/mysql8_data/mysql/mysql.pid
# 表名大小写不敏感
lower_case_table_names=1
# 服务端字符集
character-set-server=utf8mb4
# 自动提交所有事务
autocommit=1
# 跳过排它锁定
skip-external-locking
# 键缓存大小
key_buffer_size=64M
# 允许的最大数据包大小
max_allowed_packet=16M
# 表缓存
table_open_cache=6000
# 排序缓存大小
sort_buffer_size=16M
# 网络缓冲区长度
net_buffer_length=32K
# 读取缓冲区大小
read_buffer_size=16M
# 随机读取缓冲区大小
read_rnd_buffer_size=1024K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=265M
# 线程缓存大小
thread_cache_size=512
# 临时表大小
tmp_table_size=512M
# 启用显式默认时间戳
explicit_defaults_for_timestamp=ON
# 最大连接数
max_connections=3000
# 连接错误最大数量
max_connect_errors=100
# 打开文件限制
open_files_limit=65535
# 二进制日志格式
binlog_format=mixed
# 二进制日志过期时间(秒)
binlog_expire_logs_seconds=864000
# 创建表时使用的默认存储引擎
default_storage_engine=InnoDB
# InnoDB 数据文件路径设置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓冲池大小
innodb_buffer_pool_size=2G
# InnoDB 日志文件大小
innodb_log_file_size=512M
# InnoDB 日志缓冲区大小
innodb_log_buffer_size=16M
# InnoDB 每次提交时刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加锁等待超时时间(秒)
innodb_lock_wait_timeout=60
[mysqldump]
# 快速导出数据
quick
# 允许的最大数据包大小
max_allowed_packet=16M
[myisamchk]
# 键缓存大小
key_buffer_size=64M
# 排序缓冲区大小
sort_buffer_size=16M
# 读取缓冲区大小
read_buffer=8M
# 写入缓冲区大小
write_buffer=8M
[mysqlhotcopy]
# 交互式超时时间
interactive-timeout
3.2、初始化
需要进入
/usr/local/mysql8/bin
,若添加了 PATH 变量可忽略。
初始化命令:注意文件夹名称。
--defaults-file
:指定配置文件(要放在–initialize 前面)--user
: 指定用户--basedir
:指定安装目录--datadir
:指定初始化数据目录--intialize-insecure
:初始化无密码(否则生成随机密码)
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
3.3、启动 MySQL
查看 MySQL 的
/bin
下是否包含mysqld_safe
用于后台安全启动 MySQL
3.3.1、启动服务
安全后台启动 MySQL
# 完整命令
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
# 若添加了PATH变量,可省略如下
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
确认启动:第二条即 MySQL 服务。
ps -ef|grep mysql
3.3.2、登录
mysql -u root --skip-password
3.4、修改密码
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
设置密码永不过期(本地)
alter user 'root'@'localhost' password expire never;
刷新权限
FLUSH PRIVILEGES;
4、远程连接 MySQL
4.1、创建远程连接用户
选择 mysql 数据库,查看当前用户
USE mysql;
host 字段表示可访问当前数据库的主机,目前仅本地可访问。
SELECT user,host,plugin,authentication_string FROM user;
创建用户
CREATE user 'root'@'%';
设置首次密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
授权用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
设置密码永不过期(远程)
alter user 'root'@'%' password expire never;
刷新权限
FLUSH PRIVILEGES;
4.2、远程连接 MySQL
开放端口
- 查看端口状态:no 表示未开启
firewall-cmd --query-port=3306/tcp
- 永久开放端口:
firewall-cmd --add-port=3306/tcp --permanent
- 重启防火墙:
systemctl restart firewalld
至于如何设置mysql开机自启动。请看专栏的下一篇文章。