#mysql #docker #permissions
Вопрос:
Я вижу другой подобный вопрос здесь, на S. O., но никто не решил мою проблему.
Я запускаю MySQL с помощью Docker, и при первой загрузке я запускаю несколько SQL-запросов для предварительной загрузки базы данных. Одним из них является следующее:
CREATE USER 'user'@'%' IDENTIFIED BY 'user';
Grant All Privileges ON *.* to 'user'@'%';
FLUSH PRIVILEGES;
Однако, когда я пытаюсь подключиться к БД из другого контейнера, я получаю:
SQLSTATE[HY000] [2002] Connection refused (SQL: ...)
Что я делаю не так?
Это происходит как в том случае, если я использую имя контейнера, так и 127.0.0.1
в качестве хоста
моя докер-композиция выглядит так:
#MySQL Service
db:
image: mysql
container_name: db
restart: unless-stopped
tty: true
ports:
- "3307:3306"
- "8001:3306"
environment:
....
volumes:
- ./database/dbdata:/var/lib/mysql/:rw
- ./config/mysql/my.cnf:/etc/mysql/my.cnf
самое странное во всем этом то, что если я подключаюсь к БД с помощью клиента MySQL, установленного на моем компьютере, соединение работает нормально…
my.cnf
заключается в следующем:
[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/general.log
secure-file-priv = NULL
bind-address = 0.0.0.0
Комментарии:
1. @nbk добавил как мой.cnf, так и объемы, которые я монтирую
2. единственное, что я могу придумать, это то, что вы не создали пользователя с помощью native_password, что должно быть сделано в mysql 8, но вы не опубликовали, какую версию вы используете,
3. @nbk
mysql Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
4. что должно быть
native_password
?5. dev.mysql.com/doc/refman/8.0/en/create-user.html при установке mysql вы хотите использовать устаревшую опцию. как я уже сказал, вы можете попробовать