【问题标题】:Trouble installing MySQLdb for second version of Python为第二版 Python 安装 MySQLdb 时遇到问题
【发布时间】:2023-03-12 15:40:01
【问题描述】:

上下文:我正在 Ubuntu 服务器上编写一些 Python 脚本。我需要使用一些用 Python 2.7 编写的代码,但我们的服务器有 Python 2.5。我们安装了 2.7 作为 Python 的第二个实例,所以我们不会破坏任何依赖于 2.5 的东西。现在我需要安装 MySQLdb 包。我假设我不能通过运行apt-get install python-mysqldb 来简单地做到这一点,因为它可能只是重新安装到 python 2.5,所以我只是想手动安装它。

问题:在 MySQL-python-1.2.3 目录中,我尝试运行 python2.7 setup.py build 并收到一条错误消息:

sh: /etc/mysql/my.cnf: 权限被拒绝

连同显示 setup.py 找不到该文件的 Traceback。

请注意,setup.py 脚本默认在 $PATH 目录中查找 mysql_config 文件,但我们服务器的 mysql 配置文件是 /etc/mysql/my.cnf,所以我更改了包的 site.cfg 文件以匹配。我检查了文件的权限,它们是-rw-r--r--。我尝试以 root 身份运行脚本并得到同样的错误。

有什么建议吗?

【问题讨论】:

    标签: python mysql permissions configuration-files


    【解决方案1】:

    据我所知,“mysql_config”和“my.cnf”之间有非常显着的区别。

    • “mysql_config”通常位于 MySQL 安装的“bin”文件夹中,执行时会输出有关安装的各种文件系统位置信息。

    • “my.cnf”是MySQL自己使用的配置脚本。

    简而言之,当脚本要求输入“mysql_config”时,它的字面意思是名称为“mysql_config”的可执行文件,而不是您输入的文本配置文件。 MYSQLdb 需要“mysql_config”文件,以便知道要使用哪些库。而已。它不会直接读取您的 MySQL 配置。

    您遇到的错误可以归结为;

    1. 它试图打开错误的文件并遇到权限问题。

    2. 即使尝试打开该文件,仍然找不到“mysql_config”文件。

    从这里,您需要找到 MySQL 安装的“bin”文件夹并检查它是否包含“mysql_config”。然后你可以将文件夹路径编辑到“site.cnf”文件中,你应该很高兴。

    【讨论】:

    • 技术上的错误不是它试图打开错误的文件,而是它试图执行错误的文件——my.cnf两者都缺少 +x(执行)权限位,即使有,它也不是有效的可执行文件(而 mysql_config 应该是)。
    • 感谢您的帮助。不幸的是,我的系统上不存在 mysql_config。我试图通过安装 libmysqlclient16 来解决这个问题,但显然它已经安装了。我尝试删除并重新安装它,但仍然没有给我一个 mysql_config 文件。
    【解决方案2】:

    您确定该文件没有在构建过程的其他部分进行硬编码吗?为什么不在构建期间将其添加到您的 $PATH 中?

    脚本是否出于某种原因需要编写该文件?构建脚本是否使用 su 或 sudo 来尝试成为其他用户?您绝对确定权限以及您以 root 身份运行脚本这一事实吗?

    如果您仍然无法做到这一点,那真是一件很奇怪的事情。您使用的是 chroot 还是 virtualenv?

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      相关资源
      最近更新 更多