1. MySQL下載就不說了,以5.7版本舉例
2.?解壓安裝包
tar -zxvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
3.?重命名目錄
mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql
4.?創建mysql用戶組和用戶
groupadd mysql
useradd -r -g mysql mysql
5.?創建數據目錄并賦予權限
#創建目錄
mkdir -p /data/mysql
#賦予權限
chown mysql:mysql -R /data/mysql
6.?修改配置文件?
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
7. 初始化數據庫
# 如缺少權限,進行授權
chmod 755 /data
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
8.?查看root用戶密碼
#初始化完成后,默認會生成一個root用戶的密碼,最后一行,如下位置。這里要記住,后面登錄的時候需要使用。
cat /data/mysql/mysql.err
9.?啟動mysql服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlservice mysql start
10. 登錄mysql命令行,修改密碼
./mysql -u root -p
SET PASSWORD = PASSWORD('Abc@135246');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Abc@135246';
flush privileges;
11. 創建數據庫
create database testdb default character set utf8mb4 collate utf8mb4_general_ci;
12. 創建DB用戶并授權
CREATE USER 'dbuser'@'%' IDENTIFIED BY 'Abc@135246';
GRANT ALL PRIVILEGES ON testdb.* TO 'dbuser'@'%';
13.?mysql口令復雜度設置
show variables like 'validate%';
INSTALL PLUGIN validate_password SONAME 'validate_password.so';SET GLOBAL validate_password_length = 8;
SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_number_count = 1;
SET GLOBAL validate_password_special_char_count = 1;
14.?設置密碼錯誤超過次數鎖定策略
install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';#失敗五次
SET GLOBAL connection_control_failed_connections_threshold = 5;
#鎖定10分鐘
SET GLOBAL connection_control_min_connection_delay = 600000;
15. 防火墻配置
systemctl status firewalld
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service