1

dbdeployer这个问题与位于Github 的 Dbdeployer 的第 3 方工具有关

有问题的部分:

用户:

root,使用正在安装的服务器版本给出的默认授权。

我分别安装了一个实例port 5730 and port 5731。(对应于 MySQL 5.7.30 和 5.7.31)。

我可以这样连接:

mysql -u msandbox -p -h 127.0.0.1 -P 5730
mysql -u msandbox -p -h 127.0.0.1 -P 5731
mysql -u mycustomusername -p -h 127.0.0.1 -P 5730

我为文章中所示的赠款创建了一个文件:

使用选项--post-grants-sql-file加载说明。

> cat << EOF > orchestrator.sql

CREATE DATABASE IF NOT EXISTS orchestrator;
CREATE USER orchestrator IDENTIFIED BY 'msandbox';
GRANT ALL PRIVILEGES ON orchestrator.* TO orchestrator;
GRANT SELECT ON mysql.slave_master_info TO orchestrator;

EOF

$ dbdeployer deploy single 5.7 \
  --post-grants-sql-file=$PWD/orchestrator.sql

这适用于由 SQL 脚本(及其授权)部署的新空数据库,但我现在有一个现有实例,并希望从mysql 实例中创建一个新数据库。

该文章声称root应该可用,但是:

mysql -u root -p -h 127.0.0.1 -P 5731
Access denied for user 'root'@'localhost' (using password: YES)

我在 3306 上安装了本地实例,但这不应该是我需要登录的用户

当我这样做时:

mysql -u root -p -h localhost -P 5731

我能够登录,_但是这似乎忽略了端口(连接时localhost),因为我看到了不同的数据库(那些在端口 3306 上而不是来自 5730/5731 的那些)

这也证实了我对端口被忽略的怀疑:

SHOW GRANTS FOR mycustomusername;
ERROR 1141 (42000): There is no such grant defined for user 'mycustomusername' on host '%'

SHOW GLOBAL VARIABLES LIKE '%port%';
.... truncated ....
port   | 3306

我需要使用root@host5731root@host5730 但似乎没有办法在这里使用root?

我需要执行以下一项(任一项):

  • root在这些端口使用用户,
  • 获得一种方法来让msandboxmycustomusername能够有能力GRANT ALL PRIVILEGES 在一个新的数据库上做。

为什么?

--post-grants-sql-file当我已经拥有现有数据库时,我无法删除/重新创建新的 MySQL 实例来添加新数据库(使用 SQL 文件方法) 。

4

1 回答 1

1

Dbdeployer 实例和安装程序已安装并将密码配置为root与指定的用户名相同的密码(默认用户名msandbox)。

你不能这样做(即使 github repo 上的一些答案声称你可以)

dbdeployer deploy single 5.7.31 -u root -p somepassword

相反,发生的事情(并且在任何容易访问的地方都没有明确提及)是您可以执行以下操作:

dbdeployer deploy single 5.7.31 -u someuser -p somepassword

然后 Dbdeployer 设置部署此someuser AND root以具有相同的密码 ( somepassword)。

更多信息:

我发现我可以这样做:

cd /var/dbdeployer/instance/location/of/mysql.5.7.31/
./use -u root

(此处未指定密码。) 检查./use脚本,它会从您的配置中获取密码(这是someuser.

然后,这使我们能够通过登录root来更改授权:

mysql -u root -p -h 127.0.0.1 -P 5731

我现在已经从内部更改了密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

这可以防止您在外部使用./use -u root,因为密码现在与其他用户不同。

于 2021-04-07T08:58:05.647 回答