【问题标题】:Using MySQL in the command line in OS X - command not found?在 OS X 的命令行中使用 MySQL - 找不到命令?
【发布时间】:2014-12-20 16:46:20
【问题描述】:

我正在尝试在我的 Mac OS X 10.9.5 上启动并运行 MySQL。

我已经安装了 MySQL Community Server 的最新版本5.6.21。我已经进入系统偏好设置并启动 mysql 服务器,然后启动终端并输入:

/usr/local/mysql/bin/mysql --version

应该返回版本。但是当我输入任何 mysql 命令时,我会得到command not found

我也试过了:

sudo mysql_secure_installation
mysql -u root --password=password`

我确实有安装了 MySQL 等的网络托管,但我希望能够先在命令行中掌握它。

【问题讨论】:

  • 您的$PATH 中有什么内容?

标签: mysql macos


【解决方案1】:

所以终端查找命令的地方很少。这些地方存储在您的$PATH 变量中。将其视为终端迭代以查找任何命令的全局变量。这通常是二进制文件,看看 /bin 文件夹通常是如何被引用的。

/bin 文件夹里面有很多可执行文件。原来这是命令。这个不同的文件夹位置存储在一个全局变量中,即$PATH,由:分隔

现在通常安装后的程序会负责更新PATH 并告诉您的终端嘿我可以是我的bin 文件夹中的所有命令。

事实证明 MySql 在安装时并没有这样做,所以我们必须手动进行。

我们通过以下命令来做,

export PATH=$PATH:/usr/local/mysql/bin

如果你把它分解,export 是不言自明的。把它想象成一个任务。所以export 是一个变量PATH,其值为旧$PATH 与新bin 相结合,即/usr/local/mysql/bin

这样执行后/usr/local/mysql/bin 中的所有命令都可供我们使用。

这里有一个小问题。将一个终端窗口视为程序的一个实例,并且可能像 $PATH 这样的东西是类变量(可能)。请注意,这是纯粹的假设。所以在关闭时我们失去了新的任务。如果我们重新打开终端,我们将无法再次访问我们的命令,因为上次导出时,它存储在易失性的主内存中。

现在我们需要在每次使用终端时导出 mysql 二进制文件。所以我们必须坚持 concat 在我们的道路上。

您可能知道我们的终端使用名为dotfiles 的东西在终端初始化时加载配置。我喜欢将其视为每次创建终端的新实例时传递给构造函数的一组东西(再次假设但接近它可能正在做的事情)。所以是的,现在你明白我们要做什么了。

.bash_profile 是已知的主要dotfile 之一。

所以在下面的命令中,

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile

我们正在做的是保存echo的结果,即输出字符串到~/.bash_profile

所以现在正如我们上面提到的,每次我们打开终端或终端实例时,我们的dotfiles 都会被加载。所以.bash_profile 被分别加载,我们上面附加的export 被运行,因此我们的全局$PATH 得到更新,我们得到/usr/local/mysql/bin 中的所有命令。

附:

如果您没有直接运行第一个命令导出,而只是运行第二个命令以保持它?对于当前正在运行的终端实例,您必须这样做,

source ~/.bash_profile

这告诉我们的终端重新加载该特定文件。

【讨论】:

  • 花了三个小时试图解决这个问题。这是迄今为止我经过数小时研究找到的最佳答案。我刚从 Windows 切换到 Mac。
  • 很好的解释!
  • 天哪,谢谢你..耶稣这比我预期的要难。
  • 对于zsh,应该在“~/.zshrc”文件中,使用命令source ~/.zshrc
  • 我必须运行“source ~/.bash_profile”才能使其正常工作。即使重新启动也没有为我修复它
【解决方案2】:

这意味着 /usr/local/mysql/bin/mysql 不在 PATH 变量中..

要么执行 /usr/local/mysql/bin/mysql 来获取你的 mysql shell,

或在终端中输入:

PATH=$PATH:/usr/local/mysql/bin

将其添加到您的 PATH 变量中,这样您就可以在不指定路径的情况下运行 mysql

【讨论】:

  • 谢谢 - 我刚刚手动将路径更改为 /usr/local/mysql/bin/,然后再将其添加到路径中。然后我输入了ls,我可以看到所有的mysql文件,但是当我输入mysql时,我仍然找不到命令?
  • PATH 变量和您当前的工作目录是两个不同的东西。 $PATH,由我在上面给你的那行设置,当你只输入一个没有绝对/相对路径的独立命令时,系统将查看它。
  • 当您使用cd 将工作目录更改为/usr/local/mysql/bin 时,您必须通过键入./mysql 来调用mysql,让系统知道在当前目录中使用mysql ,而不是尝试在 PATH 变量中的目录之一中找到它
  • 谢谢,在您提供信息后,事情似乎更清楚了。我刚刚看到你的代码行的一个更复杂的版本,但我很难区分你的代码和这里发生的事情:echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile 然后他使用cat 命令打开它。到目前为止,我只能看到在主目录中创建了一个不可见的文件。
【解决方案3】:

对我来说,以下命令有效:

$ brew install mysql

$ brew services start mysql

【讨论】:

    【解决方案4】:

    您可以通过添加 MySQL $PATH 来修改 .bash_profile,如下所示:
    export PATH=$PATH:/usr/local/mysql/bin

    我做了以下事情:

    1- 打开终端然后$ nano .bash_profile$ vim .bash_profile

    2- 将以下 PATH 代码添加到 .bash_profile

    # Set architecture flags
    export ARCHFLAGS="-arch x86_64"
    # Ensure user-installed binaries take precedence
    export PATH=/usr/local/mysql/bin:$PATH
    # Load .bashrc if it exists
    test -f ~/.bashrc && source ~/.bashrc 
    

    3- 保存文件。

    4- 使用$ source ~/.bash_profile刷新终端

    5- 要验证,请输入 Terminal $ mysql --version

    6- 它应该像这样打印输出:

    $ mysql Ver 14.14 Distrib 5.7.17, for macos10.12 (x86_64)

    终端现在配置为从 $PATH 读取 MySQL 命令,该命令位于 .bash_profile 中。

    【讨论】:

      【解决方案5】:

      如下修改您的 bash 配置文件 $vim ~/.bash_profile 导出 PATH=/usr/local/mysql/bin:$PATH 保存后,您可以输入 mysql 以在终端中显示 mysql 提示符。

      【讨论】:

        【解决方案6】:

        如果你的 mysql 不是最新版本的 mysql,你必须创建一个符号链接。

        $ brew link --force mysql@5.6
        

        see this post by Alex Todd

        【讨论】:

          猜你喜欢
          • 2012-05-21
          • 1970-01-01
          • 2012-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-22
          • 2015-09-09
          • 1970-01-01
          相关资源
          最近更新 更多