mysql docker-compse 配置
version: "3"
services:
mysql:
image: mysql
ports:
- 3306:3306
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: fu*9!fhs
command:
--character-set-server=utf8mb4
volumes:
- ~/docker/mysql/config:/etc/mysql/my.cnf
- ~/docker/mysql/data:/var/lib/mysql/*
- ~/docker/mysql/entrypoint/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
docker-compse 配置mysql密码无效解决方案
【问题原因】: docker-compose 配置mysql的密码无效,输入密码表示密码错误
-
将配置文件从容器映射出来,并加上
skip-grant-tables
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # The MySQL Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL skip-grant-tables # Custom config should go here !includedir /etc/mysql/conf.d/
-
重启容器
-
进入容器
docker exec -it mysql mysql
- 将mysql的登陆密码设置为空并刷新
update mysql.user set authentication_string='' where User='root'; flush privileges;
-
将配置文件中的
skip-grant-tables
删掉 -
docker exec -it mysql mysql 重新进入mysql
-
设置新的密码并刷新
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; flush privileges;
-
设置远程连接并刷新
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; flush privileges;
-
重启docker
问题解决