我正在使用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
在此先感谢您的帮助!
答案 0 :(得分:0)
这可能是因为您的my_user
被允许从localhost
访问。但这是在docker容器中引用的localhost
。但是您正在尝试从主机PC访问。因此,将其替换为您的PC IP地址或使用通配符即可。
create user 'my_user'@'%' identified by 'my_password';