我正试图让mysql在我的mac osx 10.9.5上运行.我已经安装了最新版本的14.145.6.21社区服务器.我进入了系统首选项,启动了mysql服务器,然后启动了终端并键入以下内容:

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

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

推荐答案

因此,终端很少会查找命令.这些位置存储在$PATH变量中.可以将其视为一个全局变量,terminal在其中迭代以查找任何命令.这通常是二进制文件,看看/bin文件夹通常是如何被引用的.

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

现在,安装后的程序通常负责更新PATH&;告诉你的终端,嘿,我可以在我的bin文件夹中的所有命令.

事实证明,MySql在安装时不会这样做,所以我们必须手动完成.

我们是按照命令做的,

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

如果你把它分解,export是不言自明的.把它看作是一项任务.所以export是一个变量PATH,其值为旧$PATH,concat为新bin,即/usr/local/mysql/bin

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

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

现在我们需要在每次使用终端时导出mysql二进制文件.所以我们必须坚持走下go .

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

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

所以在执行命令时,

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

我们正在做的是将echo的结果即输出字符串保存到~/.bash_简介

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

附笔.

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

source ~/.bash_profile

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

Mysql相关问答推荐

如何在逗号分隔字符串值中使用LEFT函数

创建从表中筛选数据的过程时出错

如何获得表中只有最大值行的一个列被另一个列分区?

运行简单查询时Prisma预准备语句错误

获取最大登录应用程序用户数以及何时

使用Workbench时如何添加mysqldump配置标志

如何将数据导入MySQL中的master/replica struct

MySQL Procedure 变量在 count(*) 上接收 null

如何让连续 3 周或以上的用户有订单?

在 where 子句中左连接多个值

Golang Gorm 没有创建带有约束的表

MySQL 工作台与 phpMyAdmin

如何使用 C++ 连接 mySQL 数据库

MySQL INSERT IF(自定义 if 语句)

在 MySQL 中检测 utf8 损坏的字符

何时在 mysql 中使用 TEXT 而不是 VARCHAR

将 mySQL 查询作为 cron 作业(job)运行?

在另一个 where 语句(子查询?)中使用一个 sql 查询的结果

MySQL where NOT IN 名称数组?

Sequelize:销毁/删除表中的所有记录