在osx命令行中使用Mysql - 找不到命令?

use*_*598 47 mysql macos

我想在我的mac osx 10.9.5上运行mysql并运行.我已经安装了最新版本的14.14 5.6.21社区服务器.我已经去了系统首选项并启动了mysql服务器,然后启动了终端并键入了这个:

/usr/local/mysql/bin/mysql --version它返回版本,但是当我输入任何类型的mysql命令时,我得到了command not found.我也试过sudo mysql_secure_installation,mysql -u root --password=password.

我确实安装了mysql等的虚拟主机,但我希望能够首先在命令行中使用它.

kis*_*nio 136

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

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

现在通常安装的程序负责更新PATH并告诉您的终端,我可以成为我bin文件夹中的所有命令.

结果发现MySql在安装时没有这样做,所以我们手动完成它.

我们通过以下命令来做,

export PATH=$PATH:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

如果你打破它,export是自我解释.把它想象成一项任务.所以export一个PATH带有值旧的$PATHconcat 的变量与new binie/usr/local/mysql/bin

这样在执行它之后/usr/local/mysql/bin,我们可以使用里面的所有命令.

这里有一个小渔获.将一个终端窗口视为程序的一个实例,也许类似于$PATH类变量(可能).请注意,这是纯粹的假设.所以一旦结束,我们就失去了新的任务.如果我们重新打开终端,我们将无法再次访问我们的命令,因为在我们导出时,它被存储在易失性的主存储器中.

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

您可能知道我们的终端使用了一些名为dotfiles在终端初始化时加载配置的东西.我喜欢把它想象成每次创建一个新的终端实例时传递给constructer的东西(再次假设但接近它可能正在做的事情).所以是的,现在你明白了我们要做的事情.

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

所以在以下命令中,

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

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

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

PS

如果你没有直接运行第一个命令导出但只是运行第二个以便保持它?比你当前运行的终端实例,

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

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

  • 花了三个小时试图解决这个问题.这是我经过数小时研究后发现的最佳答案.我刚刚从Windows切换到Mac. (6认同)
  • 对于 zsh,它应该位于“~/.zshrc”文件中并使用命令 `source ~/.zshrc` (3认同)
  • 我必须运行“source ~/.bash_profile”才能使其正常工作。即使重新启动也没有解决我的问题 (2认同)

小智 21

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

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

或在您的终端中输入:

PATH=$PATH:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

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


小智 7

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

$ brew install mysql

$ brew services start mysql
Run Code Online (Sandbox Code Playgroud)