为什么我不能通过root用户而不是root用户通过JDBC连接到mysql docker容器?

问题描述 投票:0回答:1

我正在使用official docker container from 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';

我分配了所有特权,因为当我仅对创建的数据库分配特权时,它就失效了。

现在,当我尝试通过JDB与my_user用户连接时,它不起作用,但对于root用户,它可以工作(已在Intellij IDE上通过内部客户端进行了测试)。这是JDBC网址:

jdbc:mysql://localhost:3306/my_database

感谢您的帮助!

mysql docker
1个回答
0
投票

这可能是因为您的my_user被允许从localhost访问。但这是在Docker容器内引用的localhost。但是您正在尝试从主机PC访问。因此,将其替换为您的PC IP地址或使用通配符即可。

create user 'my_user'@'%' identified by 'my_password';
© www.soinside.com 2019 - 2024. All rights reserved.