1. MySQL8安裝 安裝環境 操作系統:CentOS7 MySQL版本:8.0.28 安裝方式:二進位Generic 軟體路徑:/app/database 數據路徑:/data/3306 日誌路徑:/binlog/3306 MySQL Community Server 社區版官網下載鏈接 MyS ...
1. MySQL8安裝
安裝環境
- 操作系統:
CentOS7
- MySQL版本:
8.0.28
- 安裝方式:
二進位Generic
- 軟體路徑:
/app/database
- 數據路徑:
/data/3306
- 日誌路徑:
/binlog/3306
MySQL Community Server 社區版官網下載鏈接
MySQL :: Download MySQL Community Server (Archived Versions)
2. MySQL三種安裝方式
- 源碼安裝:編譯安裝,可定製化高,安裝難度大時間長,不適合小白,不推薦
rpm
包安裝:安裝簡單方便,但僅限rpm
系列Linux系統,可定製化不高,生產不推薦- 二進位安裝:解壓即用,不限平臺,官方已編譯,可定製,推薦
3. 二進位版本安裝
3.1 二進位安裝包說明
二進位版本會有三個安裝包下載
- Compressed TAR Archive:主要安裝包,如果沒有特殊要求只下載這個包
- Compressed TAR Archive, Test Suite:測試包,一般用不著
- TAR:包含以上兩個包
3.2 MySQL二進位版本軟體目錄說明
解壓後目錄如下
drwxr-xr-x. 2 7161 31415 4096 Dec 18 2021 bin # mysql所有可執行程式命令,登陸、備份等等
drwxr-xr-x. 2 7161 31415 55 Dec 18 2021 docs # mysql文檔
drwxr-xr-x. 3 7161 31415 4096 Dec 18 2021 include # 依賴庫
drwxr-xr-x. 6 7161 31415 201 Dec 18 2021 lib # 函數庫
-rw-r--r--. 1 7161 31415 276595 Dec 18 2021 LICENSE
drwxr-xr-x. 4 7161 31415 30 Dec 18 2021 man # 幫助文件
-rw-r--r--. 1 7161 31415 666 Dec 18 2021 README
drwxr-xr-x. 28 7161 31415 4096 Dec 18 2021 share
drwxr-xr-x. 2 7161 31415 77 Dec 18 2021 support-files # 腳本存放目錄
3.3 安裝前環境準備
3.3.1 檢查是否已安裝MySQL
# 查看rpm是否有安裝
rpm -qa | grep -i mysql # -i 忽略大小寫
# 或者
yum list installed | grep mysql
# 查看mysql服務是否在運行
systemctl status mysqld.service
# 卸載mysql
yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx
# 刪除mysql相關文件 慎用!!
find / -name mysql | xargs rm -rf
mv /etc/my.cnd /etc/my.cnd_backup
在安裝之前最好檢查一下,如果有務必刪除乾凈,包括日誌文件和數據文件。
3.3.2 創建MySQL用戶和組
useradd -s /sbin/nologin mysql
id mysql
3.3.3 創建主要目錄
- 軟體目錄:存放MySQL軟體
- 數據目錄:存放MySQL數據,推薦使用埠號作為目錄名稱
- 日誌目錄:存放binlog日誌,推薦使用埠號作為目錄名稱
註意:生產環境下軟體目錄、數據目錄、日誌目錄不要單獨存放在一個磁碟下!
mkdir -p /app/database # 軟體目錄
mkdir -p /data/3306 # 數據目錄
mkdir -p /binlog/3306 # 日誌目錄
設置目錄許可權給mysql
用戶
chown -R mysql:mysql /app /data /binlog
3.3.4 下載並解壓
註意:千萬不要下載到32位的包,一走眼就很容易搞混!一定是glibc2.12-x86_64
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
3.4 安裝
3.4.1 設置環境變數
# 做軟連接,文件名太長不方便後續設置。不推薦修改文件名,修改了不能很快的知道mysql版本
ln -s mysql-8.0.28-linux-glibc2.12-x86_64/ mysql
# 編輯當前用戶環境變數文件
vim ~/.bash_profile
# 新增修改如下內容
MYSQL_HONE=/app/database/mysql
PATH=$PATH:$HOME/bin:$MYSQL_HONE/bin
export PATH
# 讓環境變數生效
source ~/.bash_profile
# 驗證
# mysql -V
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
3.4.2 初始化系統表
系統表是mysql運行必備的表,不可缺失!本次初始化選擇手動設置密碼方式
mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
# 參數說明
--initialize-insecure: reate the default database and exit. Create a super userwith empty password.
--initialize:Create the default database and exit. Create a super userwith a random expired password and store it into the log.
# 以上這兩參數任選其一,區分就是一個自動生成密碼,一個沒有密碼需要手動設置
--user=name: Run mysqld daemon as user.
--basedir=name: Path to installation directory. All paths are usuallyresolved relative to this
--datadir=name: Path to the database root directory
註意:初始化數據目錄一定是空目錄!否則初始化失敗
3.4.3 設置MySQL配置文件
配置文件路徑:/etc/my.cnf
以下配置文件僅供參考!根據實際機器配置來修改具體設置。
[mysqld]
user=mysql
basedir=/app/database/mysql
datadir=/data/3306
server_id=6
socket=/tmp/mysql.sock
bind-address = 0.0.0.0
# connect
max_connections = 1000
max_connect_errors = 200
# charset
character_set_server = utf8mb4
# InnoDB Settings
innodb_buffer_pool_size = 2G
innodb_read_io_threads = 15
innodb_write_io_threads = 15
# innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_instances = 8
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
# innodb_flush_method = O_DIRECT
innodb_page_cleaners = 16
# session memory settings
read_buffer_size = 32M
read_rnd_buffer_size = 32M
sort_buffer_size = 64M
tmp_table_size = 64M
join_buffer_size = 128M
thread_cache_size = 64
# slow log
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 10
min_examined_row_limit = 100
log-queries-not-using-indexes
log_throttle_queries_not_using_indexes = 10
log_timestamps = system
# log settings
log_error = error.log
# client settings
[mysql]
prompt = (\\u@\\h) [\\d]>\\_
socket=/tmp/mysql.sock
no-auto-rehash
3.4.3 準備MySQL啟動腳本
啟動腳本存放在support-files
目錄下的mysql.server
,將啟動腳本拷貝到/etc/init.d
方便運行管理
CentOS7有兩種啟動方式,一個是init.d
,一個是systemctl
,這裡只用第一種,第二種方式具體參考百度或者官網。
cp mysql.server /etc/init.d/mysqld
3.4.5 啟動MySQL
如果沒有意外的話,可以啟動成功。有一種情況會啟動失敗,啟動腳本中設置的啟動路徑不在環境變數里,此時需要設置軟連接到腳本中對應的路徑。
/etc/init.d/mysqld start
3.4.6 驗證
# /etc/init.d/mysqld status
SUCCESS! MySQL running (11794)
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1397
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
(root@localhost) [(none)]>
3.5 安裝完成後的尾收工作
3.5.1 設置管理員密碼
mysqladmin -uroot password "WeiMin@123"
3.5.2 CentOS7設置開機自啟動
設置開機自啟動的方式有很多,這裡用最簡單的一種。
註意:
- 開機自啟動的前提是啟動腳本必須存放在
/etc/init.d
目錄下!! - 生產環境最好重啟驗證!!
# 設置開機自啟動
chkconfig --add mysqld
# 查看mysqld是否在列表中
chkconfig --list
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3.5.3 CentOS7關閉防火牆、關閉開機自啟動防火牆
iptables -F
systemctl disable firewalld.service
3.5.4 關閉selinux
、修改selinux
配置文件永久關閉
setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
3.6 忘記root密碼處理辦法
—skip-grant-tables
:跳過授權表,關閉用戶認證—skip-networking
:跳過遠程登錄,只能本地登陸
# 1. 關閉資料庫
/etc/init.d/mysqld stop
# 2. 啟動資料庫到維護模式,並放到後臺
mysqld_safe --skip-networking --skip-grant-tables &
# 3. 登陸mysql並修改密碼
flush privileges;
alter user root@'localhost' identified by 'Admin@123';
# 4. 關閉資料庫,啟動驗證
/etc/init.d/mysqld stop
mysql -uroot -pAdmin@123
3.7 啟動資料庫方式
啟動有兩種方式,不建議使用命令執行!!
- 執行官方提供的啟動腳本
- 設置
systemctl
腳本
本質上啟動腳本執行的是mysqld_safe --datadir=/data/3306 --pid-file=/data/3306/mysql.pid
這條命令,所以手動執行這條命令也可以啟動mysql
# ps -ef | grep mysqld
root 6067 1 0 03:18 pts/0 00:00:00 /bin/sh /app/database/mysql/bin/mysqld_safe --datadir=/data/3306 --pid-file=/data/3306/mysql.pid
mysql 6519 6067 1 03:18 pts/0 00:00:01 /app/database/mysql/bin/mysqld --basedir=/app/database/mysql --datadir=/data/3306 --plugin-dir=/app/database/mysql/lib/plugin --user=mysql --log-error=error.log --pid-file=/data/3306/mysql.pid --socket=/tmp/mysql.sock
3.8 關閉資料庫方式
有三種方式正常關閉資料庫,不建議使用kill
來強行關閉資料庫(被強姦的感覺)
- 登陸數據,執行
shutdown
命令關閉 - 啟動腳本關閉,
/etc/init.d/mysqld stop
systemctl
關閉,前提是設置了腳本,命令和就是服務的關閉命令,沒有特別的地方。