Соединение отказано в mysql с пользователем, предоставленным на %

#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 вы хотите использовать устаревшую опцию. как я уже сказал, вы можете попробовать