YUM安装

单节点安装

1、安装mysql5.7:

  1. wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
  2. yum localinstall mysql80-community-release-el7-1.noarch.rpm
  3. yum repolist all | grep mysql
  4. yum repolist enabled | grep mysql
  5. yum install yum-utils -y
  6. yum-config-manager --disable mysql80-community
  7. yum-config-manager --enable mysql57-community
  8. yum install mysql-community-server -y
  9. systemctl start mysqld
  10. systemctl enable mysqld

2、查看密码
在 MySQL 服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • MySQL 服务器已初始化。
  • 在数据目录中生成SSL证书和密钥文件。
  • 将创建一个超级用户 帐户'root'@'localhost'。并会设置超级用户的密码,将其存储在错误日志文件中。要显示它,请使用以下命令
  1. $ grep 'temporary password' /var/log/mysqld.log
  2. 2019-11-21T06:26:36.414908Z 1 [Note] A temporary password is generated for root@localhost: -*mN,epg4N)F

3、取消密码复杂度
编辑 /etc/my.cnf配置文件, 在 [mysqld]配置块儿中添加如下内容

  1. plugin-load=validate_password.so
  2. validate-password=OFF

保存退出后,重启服务。
4、修改密码
通过上面日志中的临时密码登录并为超级用户帐户设置自定义密码:

  1. mysqladmin -u root -p'-*mN,epg4N)F' password '1q2w3e4r'

注意: MySQL的 validate_password 插件默认安装。这将要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且密码总长度至少为8个字符。
如果不行的话,则先修改配置文件设置不使用密码,登陆进去之后再修改密码。

  1. mysql -u root -p
  2. mysql> update mysql.user set authentication_string=PASSWORD('123456') where user='root';

退出mysql,注释掉/etc/my.cnf中的 skip-grant-tables=true 这一行后,保存并重启mysql,使用新密码登录即可
5、不使用密码
修改 /etc/my.cnf 文件,添加如下内容,之后重启服务

  1. skip-grant-tables=true

6、配置默认编码为 utf8
MySQL 默认为 latin1, 一般修改为 UTF-8

  1. shell> vi /etc/my.cnf
  2. [mysqld]
  3. # 在myslqd下添加如下键值对
  4. character_set_server=utf8
  5. init_connect='SET NAMES utf8'

重启 MySQL 服务,使配置生效

  1. systemctl restart mysqld.service

查看字符集

  1. mysql> SHOW VARIABLES LIKE 'character%';
  2. +--------------------------+----------------------------+
  3. | Variable_name | Value |
  4. +--------------------------+----------------------------+
  5. | character_set_client | utf8 |
  6. | character_set_connection | utf8 |
  7. | character_set_database | utf8 |
  8. | character_set_filesystem | binary |
  9. | character_set_results | utf8 |
  10. | character_set_server | utf8 |
  11. | character_set_system | utf8 |
  12. | character_sets_dir | /usr/share/mysql/charsets/ |
  13. +--------------------------+----------------------------+
  14. 8 rows in set (0.00 sec

主备安装

Docker安装

下载镜像:

  1. docker pull mysql

运行容器:

  1. docker run -d -p 3306:3306 \
  2. -v /data/docker/mysql/conf:/etc/mysql \
  3. -v /data/docker/mysql/logs:/var/log/mysql \
  4. -v /data/docker/mysql/data:/var/lib/mysql \
  5. -e MYSQL_ROOT_PASSWORD=123456 \
  6. --name mysql mysql

命令参数:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /data/docker/mysql/conf:/etc/mysql:将主机当前目录下的 conf 挂载到容器的 /etc/mysql
  • -v /data/docker/mysql/logs:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /var/log/mysql
  • -v /data/docker/mysql/data:/var/lib/mysql:将主机当前目录下的 data 目录挂载到容器的 /var/lib/mysql
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

查看容器启动情况:

  1. docker ps

防火墙开启3306端口

  1. firewall-cmd --add-port=3306/tcp
  2. firewall-cmd --zone=public --add-port=3306/tcp --permanent

/data/docker/mysql/conf下创建my.cnf

  1. [client]
  2. default-character-set=utf8mb4
  3. [mysqld]
  4. character-set-client-handshake = FALSE
  5. character-set-server = utf8mb4
  6. collation-server = utf8mb4_unicode_ci
  7. [mysql]
  8. default-character-set=utf8mb4

重新启动容器

  1. docker restart mysql

进入容器:

  1. docker exec -it mysql bash

在宿主机上登陆mysql:

  1. #登录mysql
  2. mysql -h192.168.56.100 -p3306 -uroot -p123456
  3. #添加远程登录用户
  4. CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  5. GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
  6. #查看编码
  7. showvariables like "%char%";
  8. flush privileges;

Docker-compose安装

docker-compose.yml配置文件如下:

  1. version: '3.1'
  2. services:
  3. db:
  4. image: mysql
  5. container_name: mysql
  6. restart: always
  7. environment:
  8. MYSQL_ROOT_PASSWORD: 123456
  9. command:
  10. --default-authentication-plugin=mysql_native_password
  11. --character-set-server=utf8mb4
  12. --collation-server=utf8mb4_general_ci
  13. --explicit_defaults_for_timestamp=true
  14. --lower_case_table_names=1
  15. ports:
  16. - 3306:3306
  17. volumes:
  18. - /data/docker/mysql/conf:/etc/mysql
  19. - /data/docker/mysql/logs:/var/log/mysql
  20. - /data/docker/mysql/data:/var/lib/mysql