docker run --name mysql56 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_USER=admin -e MYSQL_PASSWORD=root -d mysql:5.6Create the directory
mkdir -p ~/.dockerdata/mysql/my.cnf.d/Create a file with to set a custom mysql configuration
touch ~/.dockerdata/mysql/my.cnf.d/custom.cnf
Write the configuration bellow:
cat << EOF > ~/.dockerdata/mysql/my.cnf.d/custom.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin = mysql_native_password
EOF
Create Mysql container
docker run --name mysql57 \
-v ~/.dockerdata/mysql/my.cnf.d/:/etc/my.cnf.d \
-e MYSQL_ROOT_PASSWORD="root" \
-p 3306:3306 \
-d mysql/mysql-server:5.7
Access mysql container bash
docker exec -it mysql bash
Grant ownership to mysql user
chown -R mysql:mysql /var/lib/mysql
Access mysql from container, update hosts and grant all privileges to root;
mysql -uroot -proot
UPDATE mysql.user SET Host='%' WHERE User='root';
GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Restart mysql container
docker restart mysql
# or
docker stop mysql; docker start mysql;