目錄
- 一、檢查系統是否安裝其他版本Mariadb數據庫
- 二、環境檢查
- 2.1 必要環境檢查
- 2.2 在線安裝(有網絡)
- 2.3 離線安裝(無網絡)
- 三、下載Mysql
- 2.1 在線下載
- 2.2 離線下載
- 四、安裝Mysql
- 五、配置Mysql
- 六、開放防火墻端口
- 七、數據備份
- 八、生產環境優化
- 九、常用命令
前言:
安裝目錄:/usr/local/mysql
數據目錄:/mnt/mysql/data
日志文件:/var/log/mysqld.log
運行目錄:/var/run/mysqld
一、檢查系統是否安裝其他版本Mariadb數據庫
# 查看已安裝的 Mariadb 數據庫版本
[root@openeuler ~]# rpm -qa|grep -i mariadb
# 卸載已安裝的 Mariadb 數據庫
[root@openeuler ~]# rpm -qa|grep mariadb|xargs rpm -e --nodeps
二、環境檢查
2.1 必要環境檢查
# 查看 libaio 版本
[root@openeuler ~]# rpm -q libaio
# 查看 numactl 版本
[root@openeuler ~]# rpm -q numactl
# 查看 ncurses-compat-libs 版本
[root@openeuler ~]# rpm -q ncurses-compat-libs
2.2 在線安裝(有網絡)
[root@openeuler ~]# sudo dnf install -y libaio numactl ncurses-compat-libs
2.3 離線安裝(無網絡)
1.3.1 軟件包下載
openEuler軟件中心:https://easysoftware.openeuler.org/zh/rpm
華為開源鏡像站:http://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/everything/x86_64/Packages/
華中科技大學鏡像站:https://mirrors.hust.edu.cn/openeuler/openEuler-22.03-LTS-SP4/everything/x86_64/Packages/
RPMFind:http://www.rpmfind.net/linux/rpm2html/search.php
依賴包下載:openEuler 22.03 離線安裝 Mysql 5.7 依賴包
1.3.2 軟件包安裝
# 切換到 RPM 包所在目錄,假設 RPM 包存放在 /home/rpm_packages 目錄下
[root@openeuler ~]# cd /home/rpm_packages
# 正常安裝命令
[root@openeuler rpm_packages]# sudo rpm -ivh *.rpm --nodeps
# 強制安裝命令
# 重要事項:沒把握的話,千萬不要用下面這個命令,這個命令會忽略依賴和兼容性,可能會導致基礎組件被卸載掉。
[root@openeuler rpm_packages]# sudo rpm -Uvh *.rpm --nodeps --force
小技巧:可以提前在有網絡環境下下載安裝包,移動到無網絡環境
yumdownloader --resolve libaio
yumdownloader --resolve numactl
yumdownloader --resolve ncurses-compat-libs
三、下載Mysql
2.1 在線下載
# 創建安裝目錄
[root@openeuler ~]# cd /usr/local/
[root@openeuler local]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-el7-x86_64.tar.gz
2.2 離線下載
下載地址:https://downloads.mysql.com/archives/community/
上傳到 /usr/local 目錄下
四、安裝Mysql
3.1 創建 MySQL 用戶和組
# 創建用戶和組
[root@openeuler ~]# sudo groupadd mysql
[root@openeuler ~]# sudo useradd -r -g mysql -s /bin/false mysql
3.2 初始化安裝
# 進入安裝目錄
[root@openeuler ~]# cd /usr/local/
# 解壓安裝包
[root@openeuler local]# tar -zxvf mysql-5.7.44-el7-x86_64.tar.gz
# 重命名
[root@openeuler local]# sudo mv mysql-5.7.44-el7-x86_64 /usr/local/mysql
# 創建數據目錄
[root@openeuler local]# sudo mkdir -p /mnt/mysql/data
# 初始化
[root@openeuler local]# sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mnt/mysql/data
初始化完成后,會在終端輸出初始密碼,如 [Note] A temporary password is generated for root@localhost: xxxxxx),請務必記錄此密碼。
3.3 Mysql 用戶授權
# 安裝目錄授權
[root@openeuler local]# sudo chown -R mysql:mysql /usr/local/mysql
# PID目錄授權
[root@openeuler local]# sudo mkdir -p /var/run/mysqld
[root@openeuler local]# sudo chown -R mysql:mysql /var/run/mysqld
# 日志目錄授權
[root@openeuler local]# sudo touch /var/log/mysqld.log
[root@openeuler local]# sudo chown -R mysql:mysql /var/log/mysqld.log
3.4 配置 my.cnf
# 創建配置文件 /etc/my.cnf
[root@openeuler ~]# sudo tee /etc/my.cnf <<EOF[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#socket=/var/lib/mysql/mysql.sock
socket=/tmp/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
user=mysql
# 端口,默認3306
port=3366
# 安裝路徑
basedir=/usr/local/mysql
# 存儲路徑
datadir=/mnt/mysql/data
# 設置編碼
# character-set-server=utf8
# collation-server=utf8_general_ci
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 默認采用InnoDB存儲引擎
default-storage-engine=INNODB
# 設置大小寫敏感
lower_case_table_names=1
# sql_mode定義了支持的sql語法、數據校驗等
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 最大并行連接數
max_connections=100000[mysql]
# default-character-set = utf8
default-character-set = utf8mb4[mysql.server]
# default-character-set = utf8
default-character-set = utf8mb4[mysqld_safe]
# default-character-set = utf8
default-character-set = utf8mb4[client]
# default-character-set = utf8
default-character-set = utf8mb4
socket=/tmp/mysql.sock
EOF
3.5 設置環境變量
# /usr/local/mysql/bin 換成實際地址
[root@openeuler local]# echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
[root@openeuler local]# source /etc/profile
[root@openeuler local]# env
3.6 配置 SELinux 安全上下文
[root@openeuler local]# sudo chcon -R -t mysqld_db_t /mnt/mysql/data
[root@openeuler local]# sudo semanage fcontext -a -t mysqld_db_t "/mnt/mysql/data(/.*)?"
[root@openeuler local]# sudo restorecon -Rv /mnt/mysql/data
3.7 配置 systemd 服務
# 創建自啟動腳本
[root@openeuler local]# sudo vi /etc/systemd/system/mysqld.service# =============================================================================
# 復制粘貼以下內容:
[Unit]
Description=MySQL Server
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/mnt/mysql/data
RuntimeDirectory=mysqld
RuntimeDirectoryMode=0755[Install]
WantedBy=multi-user.target
# =============================================================================
3.8 啟動服務
# 注意:要保證 mysqld 后臺服務未啟動
# 設置開機自啟
[root@openeuler ~]# sudo systemctl daemon-reload
[root@openeuler ~]# sudo systemctl enable mysqld
# 啟動服務
[root@openeuler ~]# sudo systemctl start mysqld
# 查看服務狀態
[root@openeuler ~]# sudo systemctl status mysqld
五、配置Mysql
# 登錄 MySQL
[root@openeuler ~]# mysql -u root -p
Enter password: ## 初始密碼# 重置密碼,新密碼root
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
# 授權遠程訪問權限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 刷新策略
mysql> FLUSH PRIVILEGES;#修改密碼長度限制策略
mysql> set global validate_password_policy=0; #--表示將密碼安全等級設置為low
mysql> set global validate_password_length=1; #--表示將密碼長度設置為最小6位
mysql> FLUSH PRIVILEGES;# 查看服務編碼UTF8
mysql> SHOW VARIABLES LIKE 'character%';
# 查看最大連接數
mysql> SHOW VARIABLES LIKE 'max_connections';
# 查看存儲路徑
mysql> SHOW VARIABLES LIKE '%datadir%';# 退出
mysql> exit
六、開放防火墻端口
# 查詢端口是否開放
[root@openeuler ~]# sudo firewall-cmd --query-port=3306/tcp
[root@openeuler ~]# sudo firewall-cmd --query-port=3366/tcp
# 開放端口(TCP協議)
[root@openeuler ~]# sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@openeuler ~]# sudo firewall-cmd --zone=public --add-port=3366/tcp --permanent
# 重新加載防火墻規則
[root@openeuler ~]# sudo firewall-cmd --reload
# 驗證端口是否開放
[root@openeuler ~]# sudo firewall-cmd --zone=public --list-ports
# 查看所有端口
[root@centosServer ~]# sudo netstat -nlpt
七、數據備份
Linux 環境下 Mysql 5.7 數據定期備份
八、生產環境優化
生產環境優化 Mysql 5.7
九、常用命令
# 啟動服務
sudo systemctl start mysqld
# 查看服務狀態
sudo systemctl status mysqld
# 重啟服務
sudo systemctl restart mysqld
# 停止服務
sudo systemctl stop mysqld查看版本:mysql -V查看進程:ps -ef | grep mysqld
如果有mysqld_safe和mysqld兩個進程,說明MySQL服務當前在啟動狀態