mysql一键安装脚本(查看mysql的安装路径)

mysql一键安装脚本(查看mysql的安装路径)

  1、安装 MySQL

  1.1、拉取

  docker pull mysql:5.7

  1.2、启动mysql

  docker run -p 3306:3306 –name mysql

  -v /mydata/mysql/log:/var/log/mysql

  -v /mydata/mysql/data:/var/lib/mysql

  -v /mydata/mysql/conf:/etc/mysql

  -e MYSQL_ROOT_PASSWORD=root

  -d mysql:5.7

  参数说明

  -p 3306:3306 将容器的3306端口映射到主机的3306端口,3306是和宿主机的通信接口,所有docker内部容器的连接使用3306接口,集群配置需连接容器内部3306端口,故最好保持前后端口一致

  –name mysql 容器名字

  -v

  /mydata/mysql/log:/var/log/mysql 将配置文件夹挂载到主机

  -v

  /mydata/mysql/data:/var/lib/mysql 将日志文件夹挂载到主机

  -v

  /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机

  -e MYSQL_ROOT_PASSWORD=root 初始化 root 用户的密码

  -d mysql:5.7 以守护进程方式启动 mysql:5.7 镜像

  1.3. 查看启动是否成功

  docker ps

  注:如启动失败可通过docker logs mysql查看日志排错

  1.4、mysql 配置

  vi /mydata/mysql/conf/my.cnf

  文件内容如下:

  [client]

  default-character-set=utf8

  [mysql]

  default-character-set=utf8

  [mysqld]

  init_connect=’SET collation_connection=utf8_unicode_ci’

  init_connect=’SET NAMES utf8′

  character-set-server=utf8

  collation-server=utf8_unicode_ci

  skip-character-set-client-handshake

  #允许最大连接数;MySQL的max_connections参数用来设置最大连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100

  #MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;

  这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;

  增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;

  max_connections=1000

  ==============2020/05/20 添加==============

  bug:

  导入 SQL 的时候出现 Error #1055

  reason:

  在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。

  ONLY_FULL_GROUP_BY:ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的(其他语句也是一样)。

  fix:

  1. 在配置文件 [mysqld] 下添加

  sql_mode=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’

  2. 重启 mysql 容器。

  注意: mysql为容器的名字,不同的请更换。或使用容器ID即可。

  docker restart mysql

  =======================================

  1.5、mysql 随 docker 自启动

  docker update mysql –restart=always

  注意:这里的 mysql 是容器的名字,不是镜像的名字。

  1.6、进入 mysql (optional)

  docker exec -it mysql /bin/bash

  按Ctrl+D或输入exit退出。

  1.7、登录 mysql (optional)

  mysql -u root -p

  注意:密码root密码是上面设置的root

  1.8、修改mysql开启远程访问

  1.8.1、查看用户信息

  mysql> select host,user,plugin,authentication_string from mysql.user;

  备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码

  navicat链接错误;我们继续往下看;

  1.8.2、开启远程访问:

  mysql> ALTER user ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’;

  Query OK, 0 rows affected (0.01 sec)

  mysql> FLUSH PRIVILEGES;

  Query OK, 0 rows affected (0.01 sec)

  注:如本机已安装有mysql,3306端口被占用,外部端口可以映射为其他端口,如下:

  docker run -p 13306:3306 –name mysql …

  1.9、查看日志

  docker logs mysql

  1.10、开启binlog日志

  查看是否开启binlog日志:

  show variables like ‘%log_bin%’

  找到刚挂载到本地的mysql设置目录/mydata/mysql/conf

  [root@slave132 conf]# cd /mydata/mysql/conf

  [root@slave132 conf]# ll

  总用量 4

  -rw-r–r–. 1 root root 481 9月 22 10:12 my.cnf

  [root@slave132 conf]# vi my.conf

  新增内容如下:

  #binlog setting

  log-bin=/var/lib/mysql/mysql-bin server-id=12345

  第一个参数:作用是mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

  第二个参数:用的如果是5.7及以上版本的话,重启mysql服务会报错,这个时候我们必须还要指定这样一个参数,随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了

  设置完后重启mysql容器

  docker restart mysql

  show variables like ‘%log_bin%’

  这个时候,在数据库中创建一个数据库、表,插入一些数据,就会在/var/lib/mysql容器中看到以下,或者是看挂载出来对应的目录上(/mydata/mysql/data)

推荐阅读