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

在osx中的命令行中使用Mysql-找不到命令?,mysql,macos,Mysql,Macos,我正在尝试让mysql在我的MacOSX10.9.5上运行。我已经安装了最新版本的社区服务器。我已经转到系统首选项并启动了mysql服务器,然后启动终端并键入以下内容: /usr/local/mysql/bin/mysql--version返回版本,但当我键入任何类型的mysql命令时,都会得到未找到的命令。我还尝试了sudomysql\u secure\u安装,mysql-u root--password=password 我确实安装了带有mysql等的web主机,但我希望能够首先在命令行中使

我正在尝试让mysql在我的MacOSX10.9.5上运行。我已经安装了最新版本的社区服务器。我已经转到系统首选项并启动了mysql服务器,然后启动终端并键入以下内容:

/usr/local/mysql/bin/mysql--version
返回版本,但当我键入任何类型的mysql命令时,都会得到
未找到的命令
。我还尝试了
sudomysql\u secure\u安装
mysql-u root--password=password


我确实安装了带有mysql等的web主机,但我希望能够首先在命令行中使用它。

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

执行/usr/local/mysql/bin/mysql以获取mysql外壳

或者在终端中键入以下内容:

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

将其添加到PATH变量中,这样您就可以运行mysql,而无需指定路径,因此终端很少会在其中查找命令。这些位置存储在
$PATH
变量中。将其视为一个全局变量,终端在其中迭代以查找任何命令。这通常是二进制文件,看看/bin文件夹通常是如何被引用的

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

现在,安装后的程序通常负责更新
路径
&告诉您的终端,嘿,我可以在我的
bin
文件夹中执行所有命令

事实证明,MySql在安装时不执行此操作,因此我们必须手动执行此操作

我们是按照命令做的

export PATH=$PATH:/usr/local/mysql/bin
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
如果将其分解,
export
是不言自明的。把它看作是一项任务。因此
导出
一个值为old
$PATH
的变量
PATH
concat和new
bin
,即
/usr/local/mysql/bin

这样,在执行之后,
/usr/local/mysql/bin
中的所有命令都对我们可用

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

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

您可能知道,我们的终端在初始化终端时使用了一些调用来加载配置的东西。我喜欢将其视为每次创建terminal的新实例时传递给构造函数的一组内容(同样是一种假设,但接近于它可能正在做的事情)。是的,现在你知道我们要做什么了

.bash\u profile
是已知的主要
点文件之一

所以按照命令,

export PATH=$PATH:/usr/local/mysql/bin
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
我们正在做的是保存echo的结果,即输出字符串到~/.bash_profile

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

附言

如果您不是直接运行第一个命令导出,而是运行第二个命令来持久化它?对于当前正在运行的终端实例,您必须

source ~/.bash_profile

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

您可以通过添加MySQL
$PATH
来修改
.bash\u配置文件,如下所示:
导出路径=$PATH:/usr/local/mysql/bin

我做了以下工作:

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

2-将以下路径代码添加到
.bash\u配置文件中

# 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_配置文件刷新终端

# 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 
5-要进行验证,请键入Terminal
$mysql--version

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

$mysql版本14.14发行版5.7.17,适用于macos10.12(x86_64)


终端现在配置为从
.bash\u配置文件中的
$PATH
读取MySQL命令

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

对我来说,以下命令起作用:

$ brew install mysql

$ brew services start mysql

如果您的mysql安装不是最新版本的mysql,则必须创建一个符号链接

$ brew link --force mysql@5.6

您的
$PATH
中有什么?谢谢-在将路径添加到路径之前,我刚刚手动将路径更改为
/usr/local/mysql/bin/
。然后我键入了
ls
,我可以看到所有的mysql文件,但是当我键入
mysql
时,我仍然找不到命令?PATH变量和您当前的工作目录是两个不同的东西$路径是由我在上面给您的行设置的,当您只键入一个独立命令而没有绝对/相对路径时,系统将在其中查看。当您使用
cd
将工作目录更改为/usr/local/mysql/bin时,您必须通过键入
/mysql
来调用mysql,让系统知道在当前目录中使用mysql,而不是尝试在路径变量的某个目录中查找mysql。谢谢,在获得信息后,事情看起来更清楚了。我刚刚看到了您的代码行的一个更复杂的版本,但我正在努力区分您的代码和what