命令记不住

登陆

Linux 安装 Mysql 5.7

Centos7和8安装Mysql 5.7

1.yum仓库配置

安装

[root@tike ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

验证

[root@tike ~]# yum   repolist  all |  grep  mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community    禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community -  禁用
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community    禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community -  禁用
mysql-connectors-community/x86_64  MySQL Connectors Community     启用:      212
mysql-connectors-community-source  MySQL Connectors Community - S 禁用
mysql-tools-community/x86_64       MySQL Tools Community          启用:      132
mysql-tools-community-source       MySQL Tools Community - Source 禁用
mysql-tools-preview/x86_64         MySQL Tools Preview            禁用
mysql-tools-preview-source         MySQL Tools Preview - Source   禁用
mysql55-community/x86_64           MySQL 5.5 Community Server     禁用
mysql55-community-source           MySQL 5.5 Community Server - S 禁用
mysql56-community/x86_64           MySQL 5.6 Community Server     禁用
mysql56-community-source           MySQL 5.6 Community Server - S 禁用
mysql57-community/x86_64           MySQL 5.7 Community Server     禁用
mysql57-community-source           MySQL 5.7 Community Server - S 禁用
mysql80-community/x86_64           MySQL 8.0 Community Server     启用:      283
mysql80-community-source           MySQL 8.0 Community Server - S 禁用

开启mysql57发行版仓库,禁用其他版本

[root@tike ~]# yum-config-manager --disable mysql80-community
[root@tike ~]# yum-config-manager --enable mysql57-community

验证

[root@tike ~]# yum   repolist  all |  grep  mysql
mysql57-community/x86_64           MySQL 5.7 Community Server     启用:      524
mysql80-community/x86_64           MySQL 8.0 Community Server     禁用

2.安装并启用mysql57

通过以下命令安装 MySQL, 并启动 MySQL

[root@tike ~]# yum install -y mysql-community-server

启用

[root@tike ~]# systemctl start  mysqld
[root@tike ~]# systemctl enable  mysqld
[root@tike ~]# systemctl status  mysqld

登陆

[root@tike ~]# grep  "password"   /var/log/mysqld.log
2021-08-11T09:06:22.380624Z 1 [Note] A temporary password is generated for root@localhost: _z8h2ryqeNw<

mysql> alter user 'root'@'localhost' identified by 'Passw0rd#2021';

修改密码安全策略

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123456';

3.Centos8安装mysql5.7

1.卸载自带数据库

[root@tike ~]# rpm -qa|grep mariadb
[root@tike ~]# rpm -e --nodeps xxxxxx
[root@tike ~]# rm -rf /etc/my.cnf
[root@tike ~]# rm -rf /var/lib/mysql/

2.关闭Centos8中MySQL默认的AppStream仓库

[root@tike ~]# dnf remove @mysql
[root@tike ~]# dnf module reset mysql && sudo dnf module disable mysql
[root@tike ~]# cat > /etc/yum.repos.d/mysql-community.repo <[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=0

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=0

3.安装

[root@tike ~]# dnf --enablerepo=mysql57-community install mysql-community-server

4.配置mysql

写入配置文件my.cnf

[root@tike ~]# cat > /etc/my.cnf <[mysqld]
server-id=1
character-set-server=utf8mb4
max_connections=1000
innodb_buffer_pool_size = 12G
datadir=/data/mysql-db
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
slow_query_log=on
long_query_time=1
slow_query_log_file=/data/mysql-db/mysql-slow.log
lower_case_table_names=0
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4
EOF

启动服务

[root@tike ~]# systemctl start mysqld.service
[root@tike ~]# systemctl status mysqld.service
[root@tike ~]# systemctl enable mysqld

修改root用户

[root@tike ~]# grep "password" /var/log/mysqld.log
[root@tike ~]# mysql -uroot -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
grant all privileges on *.* to 'root'@'%' identified by 'yourpassword' with grant option;
flush privileges;

添加其他用户

create database pre default character set utf8mb4 collate utf8mb4_unicode_ci;
create database prod default character set utf8mb4 collate utf8mb4_unicode_ci;
create database test default character set utf8mb4 collate utf8mb4_unicode_ci;

grant all privileges on pre.* to pre@'172.%' identified by 'kQl9leR8rzV4HhD%';
grant all privileges on prod.* to prod@'172.%' identified by '9XS%c563i6IuQ%u1';
grant all privileges on test.* to test@'172.%' identified by '32!$^8mlwQmBRL02';

flush privileges;

5.mysql备份

dump.sh

#! /bin/bash
bak_path=/data/mysqldump
echo "start: "$(date +"%Y%m%d %H:%M:%S")
start=$(date +"%s")
echo "database: "$1
mydump="/usr/bin/mysqldump -hlocalhost -uroot -x $1"
mybak="${bak_path}/$(date +'%Y%m%d%H%M%S')-$1.sql"
echo "cmd: ${mydump} > ${mybak}"
echo "starting, sleep 3...."
#sleep 3
`${mydump} | gzip > ${mybak}`

end=$(date +"%s")
spent=$(expr $end - $start)
echo "spent ${spent}s"
echo "end: "$(date +"%Y%m%d %H:%M:%S")
echo "------------------------"

attention

shell

#! /bin/bash
cat>/root/.my.cnf<[mysqldump]
user=root
password=yourpassword
EOF

cron

15 0 * * * /bin/bash /data/mysqldump/dump.sh prod >> /data/mysqldump/dump.log 2>&1
推荐阅读