注意:名字是mysql/mysql-server,如果只输入mysql,会下载Ubuntu版本下的mysql
[ohsdba@ovm ~]$ docker pull mysql/mysql-server Using default tag: latest latest: Pulling from mysql/mysql-server 10ec637c060c: Pull complete 22caa4e2bf29: Pull complete 91fa2b4da208: Pull complete 698e38e28dfb: Pull complete Digest: sha256:d0fed24f72475f7f6f6c27c55f3ef4be05946a277cc00519a14d772d3154f14b Status: Downloaded newer image for mysql/mysql-server:latest [ohsdba@ovm ~]$ [ohsdba@ovm ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ohsdba/httpd v2 ff2c7c83451e About an hour ago 273.4 MB mysql/mysql-server latest 43d4a6c26521 21 hours ago 369.1 MB oraclelinux 6 175adfa05e40 10 weeks ago 223.1 MB [ohsdba@ovm ~]$
运行Oracle MySQL容器
[ohsdba@ovm ~]$ docker run mysql/mysql-server
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
[ohsdba@ovm ~]$
[ohsdba@ovm ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d1b64a9053f7 mysql/mysql-server "/entrypoint.sh mysql" 16 seconds ago Exited (1) 16 seconds ago cranky_euclid c307c7132420 ohsdba/httpd:v2 "/bin/sh -c '/usr/sbi" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp ohs [ohsdba@ovm ~]$注意:这里的cranky_euclid为系统指定创建的名字
[ohsdba@ovm ~]$ docker run --name mysqldb -d -e MYSQL_ROOT_PASSWORD=ohsdba -v /home/datadir:/var/lib/mysql mysql/mysql-server
-d 表示后台运行 -e 表示给给变量MYSQL_ROOT_PASSWORD传输值 -v 表示将主机的目录挂载到容器中的/var/lib/mysql目录。可以从主机上直接访问容器中的文件 db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704 [ohsdba@ovm ~]$ [ohsdba@ovm ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db29569e3d7c mysql/mysql-server "/entrypoint.sh mysql" 4 seconds ago Up 4 seconds 3306/tcp, 33060/tcp mysqldb d1b64a9053f7 mysql/mysql-server "/entrypoint.sh mysql" 45 seconds ago Exited (1) 45 seconds ago cranky_euclid c307c7132420 ohsdba/httpd:v2 "/bin/sh -c '/usr/sbi" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp ohs [ohsdba@ovm ~]$
[ohsdba@ovm ~]$ docker exec -i -t mysqldb bash
[root@db29569e3d7c /]# ps -ef|grep mysql mysql 1 0 0 09:13 ? 00:00:00 mysqld root 122 109 0 09:14 ? 00:00:00 grep --color=auto mysql [root@db29569e3d7c /]# exit [ohsdba@ovm ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db29569e3d7c mysql/mysql-server "/entrypoint.sh mysql" 33 minutes ago Up 33 minutes 3306/tcp, 33060/tcp mysqldb d1b64a9053f7 mysql/mysql-server "/entrypoint.sh mysql" 34 minutes ago Exited (1) 34 minutes ago cranky_euclid c307c7132420 ohsdba/httpd:v2 "/bin/sh -c '/usr/sbi" 40 minutes ago Up 40 minutes 0.0.0.0:8080->80/tcp ohs [ohsdba@ovm ~]$ docker rm cranky_euclid cranky_euclid [ohsdba@ovm ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db29569e3d7c mysql/mysql-server "/entrypoint.sh mysql" 33 minutes ago Up 33 minutes 3306/tcp, 33060/tcp mysqldb c307c7132420 ohsdba/httpd:v2 "/bin/sh -c '/usr/sbi" 40 minutes ago Up 40 minutes 0.0.0.0:8080->80/tcp ohs [ohsdba@ovm ~]$
查看mysqldb容器日志
[ohsdba@ovm mysql]$ docker logs mysqldb Initializing database Database initialized MySQL init process in progress... Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. /entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* MySQL init process done. Ready for start up. [ohsdba@ovm mysql]$
查看容器的详细信息
[root@ovm docker]# docker inspect mysqldb [ { "Id": "db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704", "Created": "2016-10-05T09:13:29.251184245Z", "Path": "/entrypoint.sh", "Args": [ "mysqld" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 7321, "ExitCode": 0, "Error": "", "StartedAt": "2016-10-05T09:13:29.421623692Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:43d4a6c26521f404943533923dd6dfade685440b7ff3786ce586ba2cb6a5031d", "ResolvConfPath": "/var/lib/docker/containers/db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704/resolv.conf", "HostnamePath": "/var/lib/docker/containers/db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704/hostname", "HostsPath": "/var/lib/docker/containers/db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704/hosts", "LogPath": "/var/lib/docker/containers/db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704/db29569e3d7c78238f5181edbe3ad86a56c22f22599cae0ff1387ca1b66ec704-json.log", "Name": "/mysqldb", "RestartCount": 0, "Driver": "btrfs", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/home/datadir:/var/lib/mysql" ], "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "ConsoleSize": [ 0, 0 ], "Isolation": "", "CpuShares": 0, "Memory": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": null, "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DiskQuota": 0, "KernelMemory": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": -1, "OomKillDisable": false, "PidsLimit": 0, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0 }, "GraphDriver": { "Name": "btrfs", "Data": null }, "Mounts": [ { "Source": "/home/datadir", "Destination": "/var/lib/mysql", "Mode": "", "RW": true, "Propagation": "rprivate" } ], "Config": { "Hostname": "db29569e3d7c", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "3306/tcp": {}, "33060/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "MYSQL_ROOT_PASSWORD=ohsdba", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.7-community/docker/x86_64/mysql-community-server-minimal-5.7.15-1.el7.x86_64.rpm" ], "Cmd": [ "mysqld" ], "Image": "mysql/mysql-server", "Volumes": { "/var/lib/mysql": {} }, "WorkingDir": "", "Entrypoint": [ "/entrypoint.sh" ], "OnBuild": null, "Labels": {} }, "NetworkSettings": { "Bridge": "", "SandboxID": "a185650a73376c93342f1666e77e4c628b384d4ed9da34fa3849aae16ff21119", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "3306/tcp": null, "33060/tcp": null }, "SandboxKey": "/var/run/docker/netns/a185650a7337", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "783124e2a08042fb4c7d75b72ab08b89941bcea8a83fd4e5dbdd35317812ed66", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:03", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "aefa4adb90e509a00daf872d1a25f12c77a977401d1d7ed86aeaebab2e06db05", "EndpointID": "783124e2a08042fb4c7d75b72ab08b89941bcea8a83fd4e5dbdd35317812ed66", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03" } } } } ] [root@ovm docker]#
连接容器中的MySQL
[ohsdba@ovm ~]$ docker exec -i -t mysqldb mysql -u root -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.15 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> mysql> help show Name: 'SHOW' Description: SHOW has many forms that provide information about databases, tables, columns, or status information about the server. This section describes those following: SHOW {BINARY | MASTER} LOGS SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] SHOW CHARACTER SET [like_or_where] SHOW COLLATION [like_or_where] SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where] SHOW CREATE DATABASE db_name SHOW CREATE EVENT event_name SHOW CREATE FUNCTION func_name SHOW CREATE PROCEDURE proc_name SHOW CREATE TABLE tbl_name SHOW CREATE TRIGGER trigger_name SHOW CREATE VIEW view_name SHOW DATABASES [like_or_where] SHOW ENGINE engine_name {STATUS | MUTEX} SHOW [STORAGE] ENGINES SHOW ERRORS [LIMIT [offset,] row_count] SHOW EVENTS SHOW FUNCTION CODE func_name SHOW FUNCTION STATUS [like_or_where] SHOW GRANTS FOR user SHOW INDEX FROM tbl_name [FROM db_name] SHOW MASTER STATUS SHOW OPEN TABLES [FROM db_name] [like_or_where] SHOW PLUGINS SHOW PROCEDURE CODE proc_name SHOW PROCEDURE STATUS [like_or_where] SHOW PRIVILEGES SHOW [FULL] PROCESSLIST SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n] SHOW PROFILES SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] SHOW SLAVE HOSTS SHOW SLAVE STATUS [NONBLOCKING] SHOW [GLOBAL | SESSION] STATUS [like_or_where] SHOW TABLE STATUS [FROM db_name] [like_or_where] SHOW [FULL] TABLES [FROM db_name] [like_or_where] SHOW TRIGGERS [FROM db_name] [like_or_where] SHOW [GLOBAL | SESSION] VARIABLES [like_or_where] SHOW WARNINGS [LIMIT [offset,] row_count] like_or_where: LIKE 'pattern' | WHERE expr If the syntax for a given SHOW statement includes a LIKE 'pattern' part, 'pattern' is a string that can contain the SQL "%" and "_" wildcard characters. The pattern is useful for restricting statement output to matching values. Several SHOW statements also accept a WHERE clause that provides more flexibility in specifying which rows to display. See http://dev.mysql.com/doc/refman/5.7/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.7/en/show.html mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> use sys Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables -> ; +-----------------------------------------------+ | Tables_in_sys | +-----------------------------------------------+ | host_summary | | host_summary_by_file_io | | host_summary_by_file_io_type | | host_summary_by_stages | | host_summary_by_statement_latency | | host_summary_by_statement_type | | innodb_buffer_stats_by_schema | | innodb_buffer_stats_by_table | | innodb_lock_waits | | io_by_thread_by_latency | | io_global_by_file_by_bytes | | io_global_by_file_by_latency | | io_global_by_wait_by_bytes | | io_global_by_wait_by_latency | | latest_file_io | | memory_by_host_by_current_bytes | | memory_by_thread_by_current_bytes | | memory_by_user_by_current_bytes | | memory_global_by_current_bytes | | memory_global_total | | metrics | | processlist | | ps_check_lost_instrumentation | | schema_auto_increment_columns | | schema_index_statistics | | schema_object_overview | | schema_redundant_indexes | | schema_table_lock_waits | | schema_table_statistics | | schema_table_statistics_with_buffer | | schema_tables_with_full_table_scans | | schema_unused_indexes | | session | | session_ssl_status | | statement_analysis | | statements_with_errors_or_warnings | | statements_with_full_table_scans | | statements_with_runtimes_in_95th_percentile | | statements_with_sorting | | statements_with_temp_tables | | sys_config | | user_summary | | user_summary_by_file_io | | user_summary_by_file_io_type | | user_summary_by_stages | | user_summary_by_statement_latency | | user_summary_by_statement_type | | version | | wait_classes_global_by_avg_latency | | wait_classes_global_by_latency | | waits_by_host_by_latency | | waits_by_user_by_latency | | waits_global_by_latency | | x$host_summary | | x$host_summary_by_file_io | | x$host_summary_by_file_io_type | | x$host_summary_by_stages | | x$host_summary_by_statement_latency | | x$host_summary_by_statement_type | | x$innodb_buffer_stats_by_schema | | x$innodb_buffer_stats_by_table | | x$innodb_lock_waits | | x$io_by_thread_by_latency | | x$io_global_by_file_by_bytes | | x$io_global_by_file_by_latency | | x$io_global_by_wait_by_bytes | | x$io_global_by_wait_by_latency | | x$latest_file_io | | x$memory_by_host_by_current_bytes | | x$memory_by_thread_by_current_bytes | | x$memory_by_user_by_current_bytes | | x$memory_global_by_current_bytes | | x$memory_global_total | | x$processlist | | x$ps_digest_95th_percentile_by_avg_us | | x$ps_digest_avg_latency_distribution | | x$ps_schema_table_statistics_io | | x$schema_flattened_keys | | x$schema_index_statistics | | x$schema_table_lock_waits | | x$schema_table_statistics | | x$schema_table_statistics_with_buffer | | x$schema_tables_with_full_table_scans | | x$session | | x$statement_analysis | | x$statements_with_errors_or_warnings | | x$statements_with_full_table_scans | | x$statements_with_runtimes_in_95th_percentile | | x$statements_with_sorting | | x$statements_with_temp_tables | | x$user_summary | | x$user_summary_by_file_io | | x$user_summary_by_file_io_type | | x$user_summary_by_stages | | x$user_summary_by_statement_latency | | x$user_summary_by_statement_type | | x$wait_classes_global_by_avg_latency | | x$wait_classes_global_by_latency | | x$waits_by_host_by_latency | | x$waits_by_user_by_latency | | x$waits_global_by_latency | +-----------------------------------------------+ 101 rows in set (0.00 sec) mysql> mysql> status -------------- mysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper Connection id: 6 Current database: Current user: root@127.0.0.1 SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256 Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.15 MySQL Community Server (GPL) Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 TCP port: 3306 Uptime: 14 min 40 sec Threads: 1 Questions: 121 Slow queries: 0 Opens: 162 Flush tables: 1 Open tables: 155 Queries per second avg: 0.137 -------------- mysql> 容器中MySQL配置文件 [root@db29569e3d7c /]# cat /etc/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M skip-host-cache skip-name-resolve datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock secure-file-priv=/var/lib/mysql-files user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
容器中mysql数据文件位置,对应的是主机目录/home/datadir/
[root@db29569e3d7c /]# ls -l /var/lib/mysql total 188480 -rw-r-----. 1 mysql mysql 56 Oct 5 09:13 auto.cnf -rw-------. 1 mysql mysql 1676 Oct 5 09:13 ca-key.pem -rw-r--r--. 1 mysql mysql 1075 Oct 5 09:13 ca.pem -rw-r--r--. 1 mysql mysql 1079 Oct 5 09:13 client-cert.pem -rw-------. 1 mysql mysql 1680 Oct 5 09:13 client-key.pem -rw-r-----. 1 mysql mysql 1306 Oct 5 09:13 ib_buffer_pool -rw-r-----. 1 mysql mysql 50331648 Oct 5 09:13 ib_logfile0 -rw-r-----. 1 mysql mysql 50331648 Oct 5 09:13 ib_logfile1 -rw-r-----. 1 mysql mysql 79691776 Oct 5 09:13 ibdata1 -rw-r-----. 1 mysql mysql 12582912 Oct 5 09:21 ibtmp1 drwxr-x---. 2 mysql mysql 4096 Oct 5 09:13 mysql srwxrwxrwx. 1 mysql mysql 0 Oct 5 09:13 mysql.sock -rw-------. 1 mysql mysql 2 Oct 5 09:13 mysql.sock.lock drwxr-x---. 2 mysql mysql 4096 Oct 5 09:13 performance_schema -rw-------. 1 mysql mysql 1680 Oct 5 09:13 private_key.pem -rw-r--r--. 1 mysql mysql 452 Oct 5 09:13 public_key.pem -rw-r--r--. 1 mysql mysql 1079 Oct 5 09:13 server-cert.pem -rw-------. 1 mysql mysql 1680 Oct 5 09:13 server-key.pem drwxr-x---. 2 mysql mysql 12288 Oct 5 09:13 sys [root@db29569e3d7c /]#
entrypoint.sh脚本位置和内容
[root@ovm docker]# pwd /var/lib/docker [root@ovm docker]# find . -name entrypoint.sh -ls 12194 4 -rwxr-xr-x 1 root root 3449 Oct 4 08:11 ./btrfs/subvolumes/5542689b9fc309d97ea3b3e60edb2374bbc14c2f5506ff3066bf917b1c4490d7/entrypoint.sh 12194 4 -rwxr-xr-x 1 root root 3449 Oct 4 08:11 ./btrfs/subvolumes/e70cb86235ac9849c85a3260e96fa01704ebfb60a5164d4b0f4099f08553a2ab-init/entrypoint.sh 12194 4 -rwxr-xr-x 1 root root 3449 Oct 4 08:11 ./btrfs/subvolumes/e70cb86235ac9849c85a3260e96fa01704ebfb60a5164d4b0f4099f08553a2ab/entrypoint.sh
[root@ovm docker]# cat ./btrfs/subvolumes/5542689b9fc309d97ea3b3e60edb2374bbc14c2f5506ff3066bf917b1c4490d7/entrypoint.sh
#!/bin/bash set -e # if command starts with an option, prepend mysqld if [ "${1:0:1}" = '-' ]; then set -- mysqld "$@" fi if [ "$1" = 'mysqld' ]; then # Test we're able to startup without errors. We redirect stdout to /dev/null so # only the error messages are left. result=0 output=$("$@" --verbose --help 2>&1 > /dev/null) || result=$? if [ ! "$result" = "0" ]; then echo >&2 'error: could not run mysql. This could be caused by a misconfigured my.cnf' echo >&2 "$output" exit 1 fi # Get config DATADIR="$("$@" --verbose --help --log-bin-index=/tmp/tmp.index 2>/dev/null | awk '$1 == "datadir" { print $2; exit }')" if [ ! -d "$DATADIR/mysql" ]; then if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then echo >&2 'error: database is uninitialized and password option is not specified ' echo >&2 ' You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD' exit 1 fi # If the password variable is a filename we use the contents of the file if [ -f "$MYSQL_ROOT_PASSWORD" ]; then MYSQL_ROOT_PASSWORD="$(cat $MYSQL_ROOT_PASSWORD)" fi mkdir -p "$DATADIR" chown -R mysql:mysql "$DATADIR" echo 'Initializing database' "$@" --initialize-insecure=on echo 'Database initialized' "$@" --skip-networking & pid="$!" mysql=( mysql --protocol=socket -uroot ) for i in {30..0}; do if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then break fi echo 'MySQL init process in progress...' sleep 1 done if [ "$i" = 0 ]; then echo >&2 'MySQL init process failed.' exit 1 fi mysql_tzinfo_to_sql /usr/share/zoneinfo | "${mysql[@]}" mysql if [ ! -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then MYSQL_ROOT_PASSWORD="$(pwmake 128)" echo "GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD" fi "${mysql[@]}" <<-EOSQL -- What's done in this file shouldn't be replicated -- or products like mysql-fabric won't work SET @@SESSION.SQL_LOG_BIN=0; DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys'); CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ; GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ; DROP DATABASE IF EXISTS test ; FLUSH PRIVILEGES ; EOSQL if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then mysql+=( -p"${MYSQL_ROOT_PASSWORD}" ) fi if [ "$MYSQL_DATABASE" ]; then echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" | "${mysql[@]}" mysql+=( "$MYSQL_DATABASE" ) fi if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then echo "CREATE USER '"$MYSQL_USER"'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"' ;" | "${mysql[@]}" if [ "$MYSQL_DATABASE" ]; then echo "GRANT ALL ON \`"$MYSQL_DATABASE"\`.* TO '"$MYSQL_USER"'@'%' ;" | "${mysql[@]}" fi echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}" fi echo for f in /docker-entrypoint-initdb.d/*; do case "$f" in *.sh) echo "$0: running $f"; . "$f" ;; *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;; *) echo "$0: ignoring $f" ;; esac echo done if [ ! -z "$MYSQL_ONETIME_PASSWORD" ]; then "${mysql[@]}" <<-EOSQL ALTER USER 'root'@'%' PASSWORD EXPIRE; EOSQL fi if ! kill -s TERM "$pid" || ! wait "$pid"; then echo >&2 'MySQL init process failed.' exit 1 fi echo echo 'MySQL init process done. Ready for start up.' echo fi chown -R mysql:mysql "$DATADIR" fi exec "$@" [root@ovm docker]#