删除原有mysql
centos7系统自带mariadb数据库,先卸载再安装mysql,防止有冲突,如果/etc下有my.cnf也删掉。
#1) 查询是否有安装的mariadb文件
rpm -qa | grep mariadb
#2)使用-nodeps 不考虑依赖,强制卸载
rpm -e --nodeps mariadb-server-5.5.65-1.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.65-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
安装mysql
下载
在以下地址下载文件
https://dev.mysql.com/downloads/mysql/
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
#下载
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
#1)解压mysql
tar -zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
#2) 修改解压后的文件名为mysql
mv mysql-5.7.42-linux-glibc2.12-x86_64 /opt/mysql
#3)创建目录
mkdir -p /data/mysql
#4)创建系统用户,不自动创建家目录,用户组会自动创建并锁定用户
useradd -r -M mysql
usermod -L mysql
#5)改变目录的用拥有者
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /opt/mysql
#6)初始化配置
cd /opt/mysql
./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/data/mysql --lower-case-table-names=1
- 如果报错
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
安装 包:
libaio-0.3.109-13.el7.x86_64.rpm
rpm -ivh ~/tzymsk-file/libaio-0.3.109-13.el7.x86_64.rpm
初始密码
最后的密码要记住:
2021-01-12T05:53:49.889794Z 1 [Note] A temporary password is generated for root@localhost: ycOfTlyl>5;>
这里密码是ycOfTlyl>5;>
#8)链接启动程序
ln -s /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
#9)配置自启
chkconfig mysqld on
#10) 配置文件
cat << EOF > /etc/my.cnf
[mysqld]
basedir=/opt/mysql
datadir=/data/mysql
lower_case_table_names=1
character-set-server=utf8
collation-server=utf8_unicode_ci
#mysql8不能使用以下sql mod配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#mysql8
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#监听地址 根据情况修改!
bind-address=127.0.0.1
#connection_control插件
connection-control-failed-connections-threshold=5
connection_control_max_connection_delay=300000
#开启binlog日志
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 30
server_id=1
#日志等级
log_warnings=2
#mysql8
#log_error_verbosity=2
#最大链接失败次数
max_connect_errors = 5
wait_timeout = 600
interactive_timeout = 1800
EOF
#11) 设置环境变量,添加以下配置
vim /etc/profile
#----------自定义更改
export PATH=${PATH}:/opt/mysql/bin
#使环境变量生效
source /etc/profile
#12)启动mysql
service mysqld start
#13)登录数据库,输入生成的临时密码
mysql -uroot -p
-
如果报错
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
安装
方法1
yum install libncurses*
方法2
安装
ncurses-base-6.1-9.20180224.el8.noarch.rpm
ncurses-compat-libs-6.1-9.20180224.el8.x86_64.rpm -
报错
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
centos9不提供ncurses-compat-lib了,使用ln -s /lib64/libtinfo.so.6.2 /lib64/libtinfo.so.5 && ldconfig
后续
-- mysql5.7
-- 修改密码
set password=password('123456');
-- 设置root账户的host地址(修改了才可以远程连接)
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
use mysql;
-- mysql8:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
安全设置
安装validate_password插件
install plugin validate_password soname 'validate_password.so';
-- 默认策略
>show variables like '%validate_password%';
validate_password_check_user_name:是否检查密码中包含了用户名,默认为OFF。
validate_password_dictionary_file:密码字典文件的路径,默认为空。
validate_password_length:密码的最小长度,默认为8。
validate_password_mixed_case_count:密码中必须包含的大写字母数,默认为1。
validate_password_number_count:密码中必须包含的数字数,默认为1。
validate_password_policy:密码策略,可以是 LOW、MEDIUM 或 STRONG,默认为 MEDIUM。
validate_password_special_char_count:密码中必须包含的特殊字符数,默认为1。
根据你提供的信息,当前的密码策略是 MEDIUM,要求密码长度至少为8个字符,必须包含至少一个大写字母、一个数字和一个特殊字符。
安装connection_control插件
默认策略不符合要求,去配置文件修改
>show variables like '%connection_control%';
connection_control_failed_connections_threshold:允许的登录失败次数阈值,默认为3次。在达到此次数后,将会触发 connection_control_max_connection_delay 设定的延迟。
connection_control_max_connection_delay:在达到登录失败次数阈值后,账户将会被锁定,并设置一个最大延迟时间(以毫秒为单位)。默认值是 2147483647,表示非常长的时间,可以看作是不限制。
connection_control_min_connection_delay:在达到登录失败次数阈值后,账户将会被锁定,并设置一个最小延迟时间(以毫秒为单位)。默认值是 1000,表示1秒。
创建数据库,导入sql
注意创建数据库 数据库名不能使用"-"
CREATE DATABASE swsaas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use swsaas;
source /root/swsaas.sql;
设置定时备份任务:
自行编写
\file\mysqlBackup.sh
chmod +x mysqlBackup.sh
crontab -e
SHELL=/bin/bash
#mysql数据库备份
0 3 * * * /root/mysqlBackup.sh >> /data/mysql-bak/bak.log 2>&1