下載MySQL linux版
安裝MySQL
解壓到/usr/local目錄下
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
重命名mysql
cd /usr/local
mv mysql-5.7.32-linux-glibc2.12-x86_64/ mysql
安裝依賴(lài)庫(kù)
cd mysql
yum install -y libaio
yum -y install numactl
創(chuàng)建mysql用戶(hù)與用戶(hù)組
cd mysql
mkdir data
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/
創(chuàng)建mysql相關(guān)目錄與授權(quán)(需存在mysql用戶(hù)與用戶(hù)組)
mkdir /usr/local/mysql/data /usr/local/mysql/log
mkdir -p /var/lib/mysql/
mkdir -p /var/run/mysqld/
touch /usr/local/mysql/log/mysqld.log
chmod 666 /usr/local/mysql/log/mysqld.log
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/run/mysqld/
chown -R mysql:mysql /var/lib/mysql/
初始化命令
cd /usr/local/mysql/bin
./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
初始化中如果碰見(jiàn)這個(gè)問(wèn)題
/pic:mw://bb3282da93ee203a683e8e0447f899c7
刪除已經(jīng)初始化的數(shù)據(jù),重新初始化
rm -rf /usr/local/mysql/data
./mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
查看安裝成功后的數(shù)據(jù)庫(kù)root密碼
cd /root/
cat .mysql_secret
輸出內(nèi)容
# Password set for user 'root@localhost' at 2020-10-30 16:59:57
gKcu4Awy1ZYa 這個(gè)是密碼
殺死當(dāng)前mysql進(jìn)程
netstat -apn | grep 3306
輸出
tcp6 0 0 :::3306 :::* LISTEN 17927/./mysqld
kill -9 17927
修改基本配置
vim /usr/local/mysql/support-files/mysql.server
將basedir與datadir的值按照如下修改后保存并退出
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
mysqld_pid_file_path=/var/run/mysqld/mysqld.pid
為腳本創(chuàng)建軟鏈接
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
添加基本my.cnf配置
cd /etc/
vim /etc/my.cnf
my.cnf文件
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=33068
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
symbolic-links=0
max_connections=200
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=32M
explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改mysqld執(zhí)行權(quán)限
chmod 755 /etc/rc.d/init.d/mysqld
設(shè)置mysql開(kāi)機(jī)啟動(dòng)
chkconfig mysqld on
啟動(dòng)MySQL
service mysqld start
service mysqld stop
service mysqld restart
修改密碼 參考文章鏈接
centos8需要安裝
yum install libncurses*
mysql -u root -p
輸入剛剛的密碼gKcu4Awy1ZYa
alter user 'root'@'localhost' identified by '你的密碼';
密碼設(shè)置的難一點(diǎn)僵闯,不然會(huì)報(bào)太簡(jiǎn)單了碳柱。
修改密碼另一種方式
set password for 'root'=password('p@s5w0rd');
還有一種 建議使用這種
update user set authentication_string = password("p@s5w0rd") where user="root";
允許root賬戶(hù)IP登錄
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
允許遠(yuǎn)程訪問(wèn)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
退出MySQL
exit;
備份
備份前準(zhǔn)備
# 進(jìn)入mysql安裝目錄
cd /usr/local/mysql
# 進(jìn)入bin下會(huì)發(fā)現(xiàn)有一個(gè)mysqldump 這個(gè)就是數(shù)據(jù)庫(kù)備份用到的
cd bin/
ls
# 執(zhí)行手動(dòng)備份
# 新建備份目錄
cd /usr/local
mkdir mysql-backups
cd mysql-backups
# 執(zhí)行手動(dòng)備份命令
/usr/local/mysql/bin/mysqldump -u root -p 數(shù)據(jù)庫(kù)名 > /usr/local/mysql-backups/數(shù)據(jù)庫(kù)名.sql
使用shell腳本備份
新建shell腳本-備份所有的數(shù)據(jù)庫(kù)
#!/bin/bash
#備份目錄
BACKUP_FILEDIR=/usr/local/mysql-backups/
#當(dāng)前時(shí)間
DATE=$(date +%Y%m%d)
####備份####
mysqldump --defaults-extra-file=/etc/my.cnf --all-databases | gzip > $BACKUP_FILEDIR/$DATE.sql.gz
echo $DATE"備份完成"
新建shell腳本-刪除7天前的備份文件
#!/bin/bash
#備份目錄
BACKUP_FILEDIR=/usr/local/mysql-backups
find $BACKUP_FILEDIR -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo "執(zhí)行清理七天前備份文件完成"
手動(dòng)備份
# 進(jìn)入數(shù)據(jù)庫(kù)備份目錄
cd /usr/local/mysql-backups
# 創(chuàng)建shell腳本
vim mysql.sh
# 將上面shell腳本內(nèi)容CV到服務(wù)器上,注意填上數(shù)據(jù)庫(kù)名字
# Esc 保存退出
:wq
# 嘗試執(zhí)行shell腳本
sh /usr/local/mysql-backups/mysql.sh
# 執(zhí)行報(bào)錯(cuò)了 原因是因?yàn)閿?shù)據(jù)庫(kù)有密碼了
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
# 那就解決一下
# 編輯my.cnf文件
vim /etc/my.cnf
# 填寫(xiě)并修改 mysqldump下的參數(shù)是給導(dǎo)出的命令使用的
[mysqldump]
max_allowed_packet = 400M
host=localhost
user=root
password='password'
# 再次執(zhí)行腳本暖混,在/usr/local/mysql-backups下就會(huì)出現(xiàn)一個(gè)壓縮文件
# 刪除7天前的備份
vim mysql_clean.sh
# 填寫(xiě)并修改 上面的清理腳本
自動(dòng)備份
定時(shí)任務(wù)配置
#添加定時(shí)任務(wù)
crontab -e
#加入
#每天1點(diǎn)執(zhí)行備份操作
00 1 * * * sh /usr/local/mysql-backups/mysql.sh
#每天2點(diǎn)執(zhí)行清理7天前備份操作
00 2 * * * sh /usr/local/mysql-backups/mysql_clean.sh