我们有一个 PHP 命令行脚本来对数据库进行版本控制。每当开发人员添加新的数据库补丁时,我们都会运行此脚本。
该脚本使用 MySQL 命令行运行补丁:
system('mysql --user=xxx --password=xxx < patch.sql');
Run Code Online (Sandbox Code Playgroud)
但是,MySQL 5.6 现在发出以下警告:
警告:在命令行界面上使用密码可能不安全
这显然是正确的,但对用户来说可能是也可能不是问题。
请注意,我不想依赖外部密码文件。
我正在使用 mysql 命令行客户端,我不想每次启动客户端时都需要提供密码。我有哪些选择?
如果我在我的盒子上使用 root 密码登录,我可以简单地输入
mysqldump --all-databases ,我会得到预期的“转储”。
我在 cron.daily 中设置了一个作业来运行并将其转储到备份驱动器。我遇到的问题是,虽然用户以 root 身份运行,但我收到以下消息
mysqldump:得到错误:1045:用户'root'@'localhost'的访问被拒绝(使用密码:否)
尝试连接时。我不想在脚本中硬编码 mysql 数据库 root 密码(谁会)。
考虑到我可以在我的 bash shell 的命令行中输入“mysqldump”,必须有办法使用 -u 参数。我已经在脚本的顶部有 #!/bin/bash。
我在这里错过了什么才能让它不要求数据库的 root 密码?
我现在在 cron 中使用它来备份 1 个 sql.gz 文件中的所有数据库:
0 0 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /home/backup/db/`date +\%G-\%m-\%d`_db.sql.gz
Run Code Online (Sandbox Code Playgroud)
我想要一个 .tar.gz 文件,其中有 X 其他档案,用于我有多少个数据库。这可能吗?