DbDeployer-MySQL实例-授予新数据库(或根用户)



此问题与Dbdeployer 有关

有问题的部分:

用户:

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的方法?

我需要做以下任一项:

  • 在这些端口使用CCD_ 7用户
  • 找到一种方法,让msandboxmycustomusername能够在新数据库上执行GRANT ALL PRIVILEGES

为什么

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

Dbdeployer实例和安装程序安装并配置了root的密码,使其与指定的用户名(默认用户名msandbox(相同。

你不能这样做(即使github回购协议上的一些答案声称你可以(

dbdeployer deploy single 5.7.31 -u root -p somepassword

相反,发生的事情(在任何容易访问的地方都没有明确提及(是,你可以做以下事情:

dbdeployer deploy single 5.7.31 -u someuser -p somepassword

Dbdeployer安装程序然后部署此someuserANDroot以具有相同的密码(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,因为密码现在与其他用户不同。

最新更新