建設(shè)網(wǎng)站硬件千鋒教育地址
centos系統(tǒng)環(huán)境搭建專欄🔗點(diǎn)擊跳轉(zhuǎn)
坦誠(chéng)地說,本文中百分之九十的內(nèi)容都來自于該文章🔗Linux:CentOS7安裝MySQL8(詳),十分佩服大佬文章結(jié)構(gòu)合理,文筆清晰,我曾經(jīng)在這篇文章指導(dǎo)下成功安裝mysql。今天,想把內(nèi)容搬運(yùn)寫到此博客,方便查看。
Centos7安裝MySQL
文章目錄
- Centos7安裝MySQL
- 1、安裝工作
- 1.1、卸載 MariaDB
- 1.1.1、MariaDB
- 1.1.2、卸載
- 1.2、下載資源包
- 1.2.1、官網(wǎng)下載
- 1.2.2、wget 下載
- 1.3、檢查舊版本 MySQL
- 1.4、解壓安裝
- 2、配置工作
- 2.1、基本設(shè)置
- 2.1.1、文件夾重命名
- 2.1.2、PATH 變量
- 2.1.3、確認(rèn)安裝
- 2.2、創(chuàng)建用戶組、用戶
- 2.3、數(shù)據(jù)目錄
- 3、初始化 & 啟動(dòng)
- 3.1、配置文件
- 3.2、初始化
- 3.3、啟動(dòng) MySQL
- 3.3.1、啟動(dòng)服務(wù)
- 3.3.2、登錄
- 3.4、修改密碼
- 4、遠(yuǎn)程連接 MySQL
- 4.1、創(chuàng)建遠(yuǎn)程連接用戶
- 4.2、遠(yuǎn)程連接 MySQL
1、安裝工作
1.1、卸載 MariaDB
1.1.1、MariaDB
MySQL 的一個(gè)分支,主要由開源社區(qū)維護(hù)。
CentOS 7+
不再默認(rèn)使用 MySQL 數(shù)據(jù)庫(kù),而是 MariaDB 數(shù)據(jù)庫(kù)。- 直接安裝 MySQL 會(huì)與 MariaDB 的文件沖突。
安裝 MySQL 之前,先卸載自帶的 MariaDB。
1.1.2、卸載
查看版本:有則需要卸載。
rpm -qa|grep mariadb
卸載:復(fù)制文件名,執(zhí)行以下指令。
rpm -e --nodeps 文件名
確認(rèn)卸載:
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、官網(wǎng)下載
https://downloads.mysql.com/archives/community/
1.2.2、wget 下載
在 /usr/local/
下執(zhí)行,下載資源包
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
-
沒有輸出:說明當(dāng)前系統(tǒng)沒有安裝 MySQL,開始安裝。
-
有輸出:顯示的 MySQL 不是想要的版本,則卸載。
停止服務(wù)
systemctl stop mysqld
卸載
rpm -e --nodeps mysql文件名
1.4、解壓安裝
解壓:tar 指令。
# .tar.gz 后綴
tar -zxvf 文件名# .tar.xz 后綴
tar -Jxvf 文件名
解壓完成:/usr/local/
下會(huì)生成 MySQL 文件夾。
2、配置工作
2.1、基本設(shè)置
2.1.1、文件夾重命名
重命名 MySQL 文件夾
mv 原文件夾名 mysql8
2.1.2、PATH 變量
vim /etc/profile
在最下面追加
export PATH=$PATH:/usr/local/mysql8/bin
重載環(huán)境變量
source /etc/profile
2.1.3、確認(rèn)安裝
查看版本
mysql --version
確定 MySQL 安裝成功后,可刪除壓縮包。
rm -rf 壓縮包名
2.2、創(chuàng)建用戶組、用戶
注:需要進(jìn)入
/usr/local
創(chuàng)建用戶組:groupadd
groupadd mysql
創(chuàng)建用戶:useradd
(-r
創(chuàng)建系統(tǒng)用戶,-g
指定用戶組)
useradd -r -g mysql mysql
2.3、數(shù)據(jù)目錄
創(chuàng)建目錄:
mkdir -p /data/mysql8_data
賦予權(quán)限:
更改屬主和數(shù)組
chown -R mysql:mysql /data/mysql8_data
更改模式 只有具有 root 權(quán)限的用戶和 mysql 用戶可以讀取、寫入和執(zhí)行
chmod -R 700 /data/mysql8_data
3、初始化 & 啟動(dòng)
3.1、配置文件
在 /usr/local/etc/
下創(chuàng)建 my.cnf
配置文件用于初始化 MySQL 數(shù)據(jù)庫(kù)
[mysql]
# 默認(rèn)字符集
default-character-set=utf8mb4
[client]
# 客戶端使用的端口號(hào)
port=3306
# 客戶端連接的 socket 路徑
socket=/tmp/mysql.sock
[mysqld]
# 服務(wù)端使用的端口號(hào)
port=3306
# 服務(wù)器 ID
server-id=3306
# MySQL 運(yùn)行用戶
user=mysql
# 日志時(shí)間系統(tǒng)時(shí)間
log_timestamps=SYSTEM
# 默認(rèn)時(shí)區(qū)東八區(qū)
default-time_zone='+8:00'
# 服務(wù)器連接的 socket 路徑
socket=/tmp/mysql.sock
# MySQL 安裝目錄
basedir=/usr/local/mysql8
# 數(shù)據(jù)存放目錄
datadir=/data/mysql8_data/mysql
# 開啟二進(jìn)制日志功能
log-bin=/data/mysql8_data/mysql/mysql-bin
# InnoDB 數(shù)據(jù)文件存放目錄
innodb_data_home_dir=/data/mysql8_data/mysql
# InnoDB 日志文件存放目錄
innodb_log_group_home_dir=/data/mysql8_data/mysql
# MySQL 錯(cuò)誤日志文件路徑
log-error=/data/mysql8_data/mysql/mysql.log
# 存放 MySQL 進(jìn)程 ID 的文件路徑
pid-file=/data/mysql8_data/mysql/mysql.pid
# 表名大小寫不敏感
lower_case_table_names=1
# 服務(wù)端字符集
character-set-server=utf8mb4
# 自動(dòng)提交所有事務(wù)
autocommit=1
# 跳過排它鎖定
skip-external-locking
# 鍵緩存大小
key_buffer_size=256M
# 允許的最大數(shù)據(jù)包大小
max_allowed_packet=1M
# 表緩存
table_open_cache=1024
# 排序緩存大小
sort_buffer_size=4M
# 網(wǎng)絡(luò)緩沖區(qū)長(zhǎng)度
net_buffer_length=8K
# 讀取緩沖區(qū)大小
read_buffer_size=4M
# 隨機(jī)讀取緩沖區(qū)大小
read_rnd_buffer_size=512K
# MyISAM 排序緩沖區(qū)大小
myisam_sort_buffer_size=64M
# 線程緩存大小
thread_cache_size=128
# 臨時(shí)表大小
tmp_table_size=128M
# 啟用顯式默認(rèn)時(shí)間戳
explicit_defaults_for_timestamp=true
# 最大連接數(shù)
max_connections=500
# 連接錯(cuò)誤最大數(shù)量
max_connect_errors=100
# 打開文件限制
open_files_limit=65535
# 二進(jìn)制日志格式
binlog_format=mixed
# 二進(jìn)制日志過期時(shí)間(秒)
binlog_expire_logs_seconds=864000
# 創(chuàng)建表時(shí)使用的默認(rèn)存儲(chǔ)引擎
default_storage_engine=InnoDB
# InnoDB 數(shù)據(jù)文件路徑設(shè)置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 緩沖池大小
innodb_buffer_pool_size=1024M
# InnoDB 日志文件大小
innodb_log_file_size=256M
# InnoDB 日志緩沖區(qū)大小
innodb_log_buffer_size=8M
# InnoDB 每次提交時(shí)刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加鎖等待超時(shí)時(shí)間(秒)
innodb_lock_wait_timeout=50
# 事務(wù)隔離級(jí)別為讀已提交
transaction-isolation=READ-COMMITTED
[mysqldump]
# 快速導(dǎo)出數(shù)據(jù)
quick
# 允許的最大數(shù)據(jù)包大小
max_allowed_packet=16M
[myisamchk]
# 鍵緩存大小
key_buffer_size=256M
# 排序緩沖區(qū)大小
sort_buffer_size=4M
# 讀取緩沖區(qū)大小
read_buffer=2M
# 寫入緩沖區(qū)大小
write_buffer=2M
[mysqlhotcopy]
# 交互式超時(shí)時(shí)間
interactive-timeout
3.2、初始化
需要進(jìn)入
/usr/local/mysql8/bin
,若添加了 PATH 變量可忽略。
初始化命令:注意文件夾名稱。
--defaults-file
:指定配置文件(要放在–initialize 前面)--user
: 指定用戶--basedir
:指定安裝目錄--datadir
:指定初始化數(shù)據(jù)目錄--intialize-insecure
:初始化無密碼(否則生成隨機(jī)密碼)
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
3.3、啟動(dòng) MySQL
查看 MySQL 的
/bin
下是否包含mysqld_safe
用于后臺(tái)安全啟動(dòng) MySQL
3.3.1、啟動(dòng)服務(wù)
安全后臺(tái)啟動(dòng) MySQL
# 完整命令
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
# 若添加了PATH變量,可省略如下
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
確認(rèn)啟動(dòng):第二條即 MySQL 服務(wù)。
ps -ef|grep mysql
3.3.2、登錄
mysql -u root --skip-password
3.4、修改密碼
修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
設(shè)置密碼永不過期(本地)
alter user 'root'@'localhost' password expire never;
刷新權(quán)限
FLUSH PRIVILEGES;
4、遠(yuǎn)程連接 MySQL
4.1、創(chuàng)建遠(yuǎn)程連接用戶
選擇 mysql 數(shù)據(jù)庫(kù),查看當(dāng)前用戶
USE mysql;
host 字段表示可訪問當(dāng)前數(shù)據(jù)庫(kù)的主機(jī),目前僅本地可訪問。
SELECT user,host,plugin,authentication_string FROM user;
創(chuàng)建用戶
CREATE user 'root'@'%';
設(shè)置首次密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
授權(quán)用戶所有權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
設(shè)置密碼永不過期(遠(yuǎn)程)
alter user 'root'@'%' password expire never;
刷新權(quán)限
FLUSH PRIVILEGES;
4.2、遠(yuǎn)程連接 MySQL
開放端口
- 查看端口狀態(tài):no 表示未開啟
firewall-cmd --query-port=3306/tcp
- 永久開放端口:
firewall-cmd --add-port=3306/tcp --permanent
- 重啟防火墻:
systemctl restart firewalld
至于如何設(shè)置mysql開機(jī)自啟動(dòng)。請(qǐng)看專欄的下一篇文章。