Docker mysql主机没有特权

Posted

技术标签:

【中文标题】Docker mysql主机没有特权【英文标题】:Docker mysql host not privileged 【发布时间】:2015-03-08 06:28:49 【问题描述】:

我正在尝试配置 nodejs 容器以连接到 mysql 数据库。

我的代码如下所示:

var pool  = mysql.createPool(
    host     : 'mysql',
    port     : '3306',
    user     : 'root',
    password : '...',
    database : 'general',
    connectionLimit : 50,
    queueLimit : 5000
);

我使用的是标准的mysql 容器。

我正在使用 fig 来启动容器。 fig.yml 看起来像:

node:
  build: node
  ports:
    - "9000:9000"
    - "9001:9001"
  links:
    - mysql:mysql
  command: node server/Main.js

mysql:
  image: mysql
  volumes:
    - /data/test:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: ...

每次我尝试连接时都会收到以下错误:

failed to connect to database: Error: ER_HOST_NOT_PRIVILEGED: Host '172.17.0.142' is not allowed to connect to this MySQL server

知道我做错了什么吗?我玩过wordpress,它似乎可以毫无问题地连接到同一个mysql db。

谢谢!

编辑 所以,我最终找到了答案。这个问题确实是一个特权问题。我运行了以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'

我能够访问数据库。

【问题讨论】:

可以this be of help吗?或者可能是this? 你的mysql版本是多少?General是mysql 5.6的保留字,在你的池中使用反引号 @wassgren 我不认为这是授予权限的问题,因为 wordpress 连接到同一个数据库而没有额外的权限 @Mihai mysql 版本确实是 5.6,但是用于 localhost 的同一个池就像一个魅力 @Petru 好的,为了清楚起见。 同一个数据库,是同一个服务器还是实际上是同一个逻辑数据库?通常,wordpress 使用 wordpress 用户连接到 wordpress 数据库,并且该用户具有对该特定数据库的指定权限。 【参考方案1】:

我使用 drakedroid/mysql-with-data (https://registry.hub.docker.com/u/drakedroid/mysql-with-data/) 图像。它扩展了默认图像,但添加了更多功能。

【讨论】:

以上是关于Docker mysql主机没有特权的主要内容,如果未能解决你的问题,请参考以下文章

8,docker基础之---桥接主机模式与特权指令

docker--网络和特权模式

10-docker系列-docker文件共享和特权模式

干货来啦!带你初探Docker逃逸

用 mysql 和 nodeJS 构建一个 docker

polkit-gnome-authentication-agent-1 无法在没有特权标志的 docker 中启动