此问题与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@host5731
和root@host5730
,但这里似乎没有使用root的方法?
我需要做以下任一项:
- 在这些端口使用CCD_ 7用户
- 找到一种方法,让
msandbox
或mycustomusername
能够在新数据库上执行GRANT ALL PRIVILEGES
为什么
当我已经有了现有的数据库时,我无法删除/重新创建一个新的MySQL实例来添加新的数据库(使用SQL文件方法(--post-grants-sql-file
。
root
的密码,使其与指定的用户名(默认用户名msandbox
(相同。
你不能这样做(即使github回购协议上的一些答案声称你可以(
dbdeployer deploy single 5.7.31 -u root -p somepassword
相反,发生的事情(在任何容易访问的地方都没有明确提及(是,你可以做以下事情:
dbdeployer deploy single 5.7.31 -u someuser -p somepassword
Dbdeployer安装程序然后部署此someuser
ANDroot
以具有相同的密码(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
,因为密码现在与其他用户不同。