Почему я не могу подключиться к контейнеру mysql docker через JDB C с другим пользователем базы данных, кроме root? - PullRequest
0 голосов
/ 29 мая 2020

Я использую официальный docker контейнер из mysql.

Я запускал docker контейнер с этими командами]:

sudo docker run -d --name desarrollo -p 3306:3306 -h localhost -e MYSQL_ROOT_PASSWORD=admin --mount src=mysql-desarrollo,dst=/var/lib/mysql mysq

Потом подключил:

sudo docker exec -it desarrollo mysql -u root -p

Сработало. Хотя я не знаю, почему у меня есть пользователь root с хостом '%'

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

Затем я выполнил следующие предложения для создания базы данных и ее пользователя:

create database my_database CHARACTER SET utf8 COLLATE utf8_bin;
create user 'my_user'@'localhost' identified by 'my_password';
grant ALL PRIVILEGES ON *.* TO 'my_user'@'localhost';

Я назначил все привилегии, потому что, когда я назначал привилегии только для моей созданной базы данных, это не сработало.

Теперь, когда я пытаюсь подключиться к пользователю my_user через JDB, он не работает, но с пользователем root он работает (тестировался с внутренним клиентом на Intellij IDE). Это JDB C url:

jdbc:mysql://localhost:3306/my_database

Заранее благодарим за вашу помощь!

1 Ответ

0 голосов
/ 29 мая 2020

Это может быть потому, что вашему my_user разрешен доступ из localhost. Но это относится к localhost внутри контейнера docker. Но вы пытаетесь получить доступ с хоста P C. Так что замените его своим IP-адресом P C или используйте подстановочный знак.

create user 'my_user'@'%' identified by 'my_password';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...