我正在尝试使用以下过程将数据库从安装在EC2实例中的MySQL 5.7迁移到AWS RDS MySQL 5.7: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.SmallExisting.html
mysqldump -u <local_user> \
--databases <database_name> \
--single-transaction \
--compress \
--order-by-primary \
-p<local_password> | mysql -u <RDS_user> \
--port=<port_number> \
--host=<host_name> \
-p<RDS_password>
运行mysqldump命令时,我收到以下已知警告: “在命令行界面上使用密码可能不安全”。
我尝试了解决方法,但就我而言,EC2 DB和AWS RDS具有不同的用户/ pswds。
mysql_config_editor set --login-path=local --host=localhost --user=username --password
Suppress warning messages using mysql from within Terminal, but password written in bash script
如何使用两个不同的用户和密码从命令行运行mysqldump?
答案 0 :(得分:1)
你的管道mysql客户端无法访问stdin,因为它的stdin实际上是stdout
命令的mysqldump
流。由于您不希望在命令行中提供密码,请尝试以下方法。
mysql_config_editor set --login-path=local --host=localhost --user=username --password
mysql_config_editor set --login-path=remote --host=rds_host --user=rds_user --password
这将在配置文件中创建2个部分,名为local
和remote
(您可以更改名称)。现在:
mysqldump --login-path=local | mysql --login-path=remote
应该有效
答案 1 :(得分:0)
mysql_config_editor set --login-path=local --host=localhost --user=username --password
这将连接到您登录的服务器上运行的本地mysql引擎。在您的情况下,您必须已登录到ec2实例。
现在要连接到RDS实例(使用不同的用户/密码),您可以使用以下命令。您必须在RDS sec-group上打开端口 3306 ,并将ec2 sec-group作为源。
mysql_config_editor set --login-path=myrdsinstance --host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=username --password
如果您想根据用户ID为同一个实例创建多个登录路径,那么您所要做的就是相应地更改登录路径ID
例如:
mysql_config_editor set --login-path=myrdsinstance-user1
--host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=user1 --password
mysql_config_editor set --login-path=myrdsinstance-user2
--host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=user2 --password