Linux安装Mysql

删除原有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
# Linux  mysql 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×