MySQL 8.0 Docker使用注解
MySQL 8.0 Docker
<small>Latest build: 2017-08-30</small>
mysql 5.5 | mysql 5.6 | mysql 5.7 | mysql 8.0 | mariadb 5.5 | mariadb 10.0 | mariadb 10.1 | mariadb 10.2 | mariadb 10.3 | percona 5.5 | percona 5.6 | percona 5.7
MySQL 8.0 Docker on CentOS 7
<sub>This docker image is part of the devilbox</sub>
Options
Environmental variables
Required environmental variables
Variable | Type | Description |
---|---|---|
MYSQL_ROOT_PASSWORD | string | MySQL root user password of either existing database or in case it does not exist it will initialize the new database with the given password. |
Optional environmental variables
Variable | Type | Default | Description |
---|---|---|---|
DEBUG_COMPOSE_ENTRYPOINT | bool | 0 |
Show shell commands executed during start.<br/>Value: 0 or 1 |
TIMEZONE | string | UTC |
Set docker OS timezone.<br/>Example: Europe/Berlin |
MYSQL_SOCKET_DIR | string | /var/sock/mysqld |
Path inside the docker to the socket directory.<br/><br/>Used to separate socket directory from data directory in order to mount it to the docker host or other docker containers.<br/><br/>Mount this directory to a PHP container and be able to use mysqli_connect with localhost . |
MYSQL_GENERAL_LOG | bool | 0 |
Turn on or off general logging<br/>Corresponds to mysql config: general-log <br/>Value: 0 or 1 |
Default mount points
Docker | Description |
---|---|
/var/lib/mysql | MySQL data dir |
/var/log/mysql | MySQL log dir |
/var/sock/mysqld | MySQL socket dir |
/etc/mysql/conf.d | MySQL configuration directory (used to overwrite MySQL config) |
/etc/mysql/docker-default.d | MySQL configuration directory (used to overwrite MySQL config) |
Default ports
Docker | Description |
---|---|
3306 | MySQL listening Port |
Usage
1. Listen on loopback interface only
$ docker run -i \
-p 127.0.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-t cytopia/mysql-8.0
# Access MySQL from your host computer
$ mysql --user=root --password=my-secret-pw --host=127.0.0.1 -e 'show databases;'
2. Enable logging
Enable logging and mount the log directory to your host to ~tmp/mysql-log
$ docker run -i \
-p 127.0.0.1:3306:3306 \
-v ~tmp/mysql-log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_GENERAL_LOG=1 \
-t cytopia/mysql-8.0
# Access MySQL from your host computer
$ mysql --user=root --password=my-secret-pw --host=127.0.0.1 -e 'show databases;'
3. Mount MySQL socket to the host
Use MySQL socket for localhost
connections through the socket. No need to expose the MySQL port to the host in this case.
$ docker run -i \
-v ~tmp/mysql-sock:/var/sock/mysqld \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-t cytopia/mysql-8.0
# Access MySQL from your host computer via socket
$ mysql --user=root --password=my-secret-pw --socket=/var/sock/mysqld/mysqld.sock -e 'show databases;'
4. Overwrite configuration
You can also add any configuration settings prior startup to MySQL.
# Create local config with buffer overwrite
$ printf "[mysqld]\n%s\n" "key_buffer = 500M" > ~/tmp/mysqld_config/buffer.cnf
$ docker run -i \
-p 127.0.0.1:3306:3306 \
-v ~/tmp/mysqld_config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-t cytopia/mysql-8.0
MySQL Configuration overview
Configuration files inside this docker are read in the following order:
Order | File | Description |
---|---|---|
1 | /etc/my.cnf |
Operating system default |
2 | /etc/mysql/conf.d/ |
Custom configuration (level 1). Can be mounted to provide custom *.cnf files which can overwrite anything of the above. (used by the devilbox for its base configuration) |
3 | /etc/mysql/docker-default.d/*.cnf |
Custom configuration (level 2). Can be mounted to provide custom *.cnf files which can overwrite anything of the above. (used by the devilbox to allow custom user-defined configuration overwriting the default devilbox settings. |
Modules
[Version]
/usr/sbin/mysqld Ver 8.0.2-dmr for Linux on x86_64 (MySQL Community Server (GPL))