无法从外部 bash 脚本正确设置 MySQL 密码

2024-04-29

我有两个脚本 - 主要的一个脚本执行一些不同的操作并调用第二个脚本,第二个脚本安装 MySQL。

从我的主脚本中我做了这样的事情:

...

read -p "Set the password for the database [min. 4 characters]: " MPASS

# Install MySQL
path/to/setup-mysql.sh "$MPASS"

mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO root@'${IPADDRESS}' IDENTIFIED BY '${MPASS}';"
mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '${MPASS}';"
service mysql restart

mysql --user="root" --password=${MPASS} -e "SET GLOBAL validate_password_policy = 'LOW'; SET GLOBAL validate_password_length = 4; CREATE USER 'johndoe'@'${IPADDRESS}' IDENTIFIED BY '${MPASS}';"
mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO 'johndoe'@'${IPADDRESS}' IDENTIFIED BY '${MPASS}' WITH GRANT OPTION;"
mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO 'johndoe'@'%' IDENTIFIED BY '${MPASS}' WITH GRANT OPTION;"
mysql --user="root" --password=${MPASS} -e "FLUSH PRIVILEGES;"

And setup-mysql.sh看起来像这样:

#!/bin/bash

export DEBIAN_FRONTEND=noninteractive

debconf-set-selections <<< "mysql-community-server mysql-community-server/data-dir select ''"
debconf-set-selections <<< "mysql-community-server mysql-community-server/root-pass password ${1}"
debconf-set-selections <<< "mysql-community-server mysql-community-server/re-root-pass password ${1}"

apt-get install -y mysql-server

# Start mysql on boot
update-rc.d mysql defaults

# Configure Password Expiration
echo "default_password_lifetime = 0" >> /etc/mysql/my.cnf

# Configure Access Permissions For Root
sed -i '/^bind-address/s/bind-address.*=.*/bind-address = */' /etc/mysql/my.cnf

对我来说,这看起来应该可以工作,但是,当 bash 执行此行时:

mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO root@'${IPADDRESS}' IDENTIFIED BY '${MPASS}';"

它说密码错误。当我尝试手动登录时,它不起作用。当我跳过密码字段时(mysql -u root) 有用。所以根本没有设置密码。

另外,当我这样做时echo $1 in setup-mysql.sh,它正确地显示了什么MPASS包含。

为什么不是debconf-set-selections为我的 MySQL 安装正确设置密码。我在这里真的很困惑。


看来您正在编写 MySQL 安装后初始化 shell 脚本。

我个人认为:改变你的shell脚本设计方法。

在您的脚本中,您使用mysql --user="root" --password=${MPASS}提示错误信息。您将使用 mysql 参数--defaults-file,写入mysql登录用户root并将相应的密码放入临时文件中,例如

[client]
user=root
password=YOURPASSWORD

假设文件路径是/tmp/mysql.cnf(分配变量mysql_my_cnf)

然后使用mysql --defaults-file="$mysql_my_cnf"登录,即可登录成功。

将变量分配给mysql --defaults-file="$mysql_my_cnf", 例如mysql_command

老方法

mysql --user="root" --password=${MPASS} -e "GRANT ALL ON *.* TO root@'${IPADDRESS}' IDENTIFIED BY '${MPASS}';"

新方法

${mysql_command} -e "GRANT ALL ON *.* TO root@'${IPADDRESS}' IDENTIFIED BY '${MPASS}';"

你可以尝试一下。

PS

我写了一个MySQL及其变种安装和初始化shell脚本 https://github.com/MaxdSre/axd-ShellScript/blob/master/assets/software/MySQLVariants.sh,这可能对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从外部 bash 脚本正确设置 MySQL 密码 的相关文章

  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 如何显示 zsh 函数定义(如 bash“type myfunc”)?

    如何在 zsh 中显示函数的定义 type foo没有给出定义 在bash中 bash function foo echo hello bash foo hello bash type foo foo is a function foo e
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • 在PHP中,如何在表格中显示数组内容

    如果我在 MySQL 客户端中进行选择 我将得到如下所示的输出 mysql gt select FROM group LIMIT 2 group id group supergroup id group deletable group la
  • Bash 脚本大小限制?

    我有一个 bash 脚本 在 RHEL 或 OS X 上运行时出现以下错误 第 62484 行 意外标记 换行符 附近出现语法错误 第 62484 行 o gz 这是一个自动生成的脚本 用于解决我公司使用的 Grid Engine 计算集群
  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • 如何修改 Amazon RDS 实例的 my.ini 参数

    在启动 MySQL 5 5 RDS 实例时 Amazon 使用默认参数组来配置 my ini 参数 但控制台不允许我修改它们 我怎样才能实现这个目标 例如默认将存储引擎设置为MyISAM或设置字符集 此处记录了这一点 http aws am
  • 如何在php中根据url从mysql获取数据?

    我在 mysql 数据库中有一个页表 其中包含 page name title content author 字段 我想用 php 来获取它http www domain com index php page page name http
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • Laravel Schema Builder 改变存储引擎

    我正在尝试更改表并将其存储引擎更改为InnoDb 当我跑步时php artisan migrate它完成且没有错误 然而 当我检查 Sequel Pro 中的存储引擎时 没有任何变化 public function up Schema ta
  • php无法在docker-compose中连接到mysql

    这是我的 docker compose version 2 services nginx image nginx 1 11 8 alpine ports 8081 80 volumes code usr share nginx html h
  • 退出 PHP 脚本后终止或停止 MySQL 查询

    我在工作中运行一个统计服务器 由于运行的查询量很大 该服务器有时会变得非常慢 我们的营销团队使用它作为主要统计工具 团队中的某些人有时会在脚本结束之前退出脚本 通过关闭浏览器或选项卡 同时 SQL 查询继续执行 当有人关闭或离开 PHP 脚
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • MySQL 复制是双向的

    我们已经成功设置了 MySQL 文献中描述的主从复制 不过 我很好奇是否有人设置了双向复制 例如 如果安装了 Drupal 或 Wordpress 第一个 主 数据库服务器出现故障 第二个 从属 数据库服务器恢复正常 与此同时 用户不断进行
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u

随机推荐

  • 如何在 SSRS 中将多个值传递给多值参数

    我将通过过度简化报告结构来尽力解释这个问题 第一份报告包含 1 个名为 资源中心 的组 然后在其下包含一行总计 总计实际上是一个组 但分组是在 SQL 中完成的 并显示在详细信息组中 该报告看起来像这样 Report 1 ResourceC
  • 清除 Laravel 队列缓存而不重新启动

    在我的应用程序中 每个客户都有一种复杂的类 我们在其中为该特定客户进行一些搜索和替换 我运行队列工作人员每天与 eBay 同步 以便每个客户进行某种搜索和替换 问题是 Laravel 队列会缓存代码很长一段时间 如果我想去更改任何客户类文件
  • 如何使用 Javascript 更改具有相同类名的多个元素?

    跟进至我之前的问题 https stackoverflow com q 42389937 2803565 我想使用 JS 使用按钮来显示 隐藏具有相同类名的多个元素 但似乎我只能更改具有特定类名的第一个元素 并且页面上具有相同类名的所有其他
  • Android - 如何创建布局选择器(如 ImageButton 选择器)

    我有一个 ImageButton 和一个包裹该按钮的 LinearLayout 如下所示
  • Rxjava 中“背压”一词是什么意思?

    我是 RxJava 的初学者 我很好奇 背压 这是否意味着生产者在背后给消费者施压 或者这是否意味着消费者正在向生产者施加压力 反方向施压 RxJava 背压 当你有一个 observable 发射物品的速度太快 以至于消费者无法跟上流量
  • 循环遍历类为“blah”的所有元素并找到最高的 id 值

    我有很多元素 例如 div class blah div 我想循环遍历所有这些并获得最高的 ID 即 123 这个怎么做 以下是正确的和最好的方法吗 blah each function var id this attr id split
  • 在 Windows 应用商店应用程序中进行模拟

    我可能不是第一个出于测试目的而在 Windows 商店应用程序中处理模拟的人 我想测试我的 ViewModel 并使用一些模拟框架来模拟它们 当然 所有可用的 通用 框架都不能在 Windows 应用商店应用程序项目中使用 我有一个想法如何
  • 返回“application/xml”而不是“text/plain”ASP.NET Core Web API

    我有一个 XML 字符串 我需要将其作为 XML 文档返回 默认情况下 返回的内容类型为text plain 内容已呈现 但我需要内容类型application xml 我启用了 RespectBrowserAcceptHeader 选项
  • C++ 是否可以延迟常量静态成员的初始化?

    我正在使用 Qt 但这是一个通用的 C 问题 我的情况很简单 我有一个课程Constants它有一个常量静态成员 我希望在进行某些函数调用后对其进行初始化 常量 h ifndef CONSTANTS H define CONSTANTS H
  • iPhone 上 NSString 的 AES 加密

    任何人都可以为我指明正确的方向 以便能够加密字符串 并返回带有加密数据的另一个字符串吗 我一直在尝试使用 AES256 加密 我想编写一种需要两个 NSString 实例的方法 一个是要加密的消息 另一个是用于加密它的 密码 我怀疑我必须生
  • 读取 C/C++ 的 EOF

    我正在使用 NetBeans MinGW 编译简单的 C 程序 我是新手 我的问题是我有这个简单的代码 include
  • 将分区扩展到另一级

    根据下图来自春季批量文档 http docs spring io spring batch reference html scalability html partitioning 主步骤被划分为六个从步骤 它们是主步骤的相同副本 我的问题
  • 计算5个城市之间的地理距离以及每个城市所有可能的组合

    所以我有一个 csv 文件 其中包含 3 列 城市 纬度 经度 我已经使用此代码从这个 csv 文件在 python 中创建了一个数据框 data pd read csv lat long csv nrows 10 Lat data lat
  • 2+3 是否被视为文字?

    假设我有类似的东西 int x 2 3 Is x被认为是字面意思吗 x是一个符号 2 3是一个表达式 2 and 3是文字
  • 如何从不知道要卸载的工件名称或工件组 ID 的脚本中执行与 mvn install 相反的操作? [复制]

    这个问题在这里已经有答案了 这听起来应该很容易 但我还没有找到答案 如果我使用 mvn install 安装一个工件 如何删除该工件 我尝试使用 dependency purge local repository 但它只删除依赖项 而不是实
  • 我的 matlab 图中需要不同的颜色

    这是我的情节代码 问题是我的图中的两条线具有相同的颜色 我需要为图中的每条线 总共 4 条线 分配一个特殊的颜色 for i 1 nFolderContents data hdrload folderContents i if size f
  • 如何在cordova中动态加载CSS

    我正在尝试通过 xhr 请求在 cordova 中动态加载 CSS CSS 的加载不是问题 我可以通过 xhr 加载它并通过 HTML5 文件 API 将其存储到文件系统 然后我就可以得到一个完美的 URL 但是如果我通过 javascri
  • 如何模拟嵌套函数?

    我想模拟特定函数中的一些嵌套函数 tools py def cpu count def get cpu quota return int load sys fs cgroup cpu cpu cfs quota us def get cpu
  • c 中的指针、双指针和三重指针[重复]

    这个问题在这里已经有答案了 可能的重复 有人可以告诉我给定代码中第二个 printf 语句中的引用流吗 https stackoverflow com questions 4638527 can someone tell me the fl
  • 无法从外部 bash 脚本正确设置 MySQL 密码

    我有两个脚本 主要的一个脚本执行一些不同的操作并调用第二个脚本 第二个脚本安装 MySQL 从我的主脚本中我做了这样的事情 read p Set the password for the database min 4 characters