终端无法识别 mysqld 和 mysql 命令
Posted
技术标签:
【中文标题】终端无法识别 mysqld 和 mysql 命令【英文标题】:Terminal doesnt not recognise mysqld and mysql commands 【发布时间】:2017-03-02 18:25:33 【问题描述】:我正在运行 OSX 10.9.5,在尝试重置我的 mysql 根密码时,我输入了以下内容:
sudo mysqld_safe --skip-grant-tables
在被要求输入管理员密码后,我得到了这个错误:
sudo: mysqld_safe: 找不到命令
这是我写的
cd /usr/local/mysql
另外,我的 sudo 命令有问题,尽管我登录了我的帐户的管理员帐户,但它经常给我权限被拒绝,就像使用此命令解决基本相同的问题(重置我的 root 密码)
sudo 杀死
cat /usr/local/mysql/data/rodongi.pid
然后我得到了
cat: /usr/local/mysql/data/rodongi.pid: 权限被拒绝
密码:
输入密码后……
用法:kill [-s signal_name] pid ... 杀死 -l [退出状态] 杀死 -signal_name pid ... 杀死 -signal_number pid ...
不知道为什么
1) 我没有权限,即使我使用了 sudo 命令(还有一次是 sudo!!) 2) 为什么 msql-bash 不能识别 mysql 和 mysqld 命令(我在终端 bash 中也试过;也不行)【问题讨论】:
使用which mysql
检查你的Mac是否安装了MySQL。
我确实安装了 mysql。我什至可以启动 mysql 服务器但无法访问 MySQLWorkbench,因为我需要 orrt 密码。无论如何,我在终端 bash 和 mysql-bash 中尝试了它,但没有得到任何响应。 rodongi$ 哪个 mysql rodongi$
如果在终端 bash which mysql
没有返回任何结果,你怎么知道你安装了 mysql?
我在系统偏好设置中获得了 MySQL :)
type -a mysql
应该显示它的安装位置。它返回什么?
【参考方案1】:
第一个问题
您正在尝试执行命令mysqld_safe
,因此该命令应该位于终端查找命令的PATH 上。 (您可以通过运行echo $PATH
查看这些位置。不同的位置用冒号分隔。
由于您尝试运行本地目录中的文件,因此您应该键入 ./mysqld_safe
告诉 shell 您正在提供文件路径,否则它将在 中搜索它路径。 (您可以通过指定完整路径从任何地方运行该文件)。
另一个解决方案是在/usr/local/bin/
中创建一个指向 /usr/local/mysql/mysqld_safe` 的符号链接(如果我理解正确,这是命令的路径)。这样你就可以从任何地方运行命令,因为它在 shell 正在寻找的路径中。
第二个问题
由反引号括起来的cat
命令由运行sudo 命令的shell在 执行(如果文件对所有人可读,则shell 将执行类似:sudo kill 12345
)。 p>
要以 root 身份运行 cat
,您应该运行以下命令:
sudo bash -c 'kill `cat /usr/local/mysql/data/rodongi.pid`'
这样,您以 root 身份运行 bash,而后者又运行 kill
命令,从而以 root 身份读取 rodongi.pid
文件。
【讨论】:
好的,我通过 echo $PATH 获得了 mysqld_safe 的路径。那我该怎么办? 我试过 sudo bash -c 'killcat /usr/local/mysql/data/rodongi.pid
' 。但是我得到了 cat: /usr/local/mysql/data/rodongi.pid: No such file or directory kill: 用法: kill [-s sigspec | -n 符号 | -sigspec] pid | jobspec ... 或 kill -l [sigspec]
@Falanpin 我不确定“我通过 echo $PATH 获得了 mysqld_safe 的路径”是什么意思。 echo $PATH 显示 shell 搜索您键入的命令的位置。如果您指定文件的完整位置,则 PATH 不在游戏中,终端只会运行您告诉它的文件。
我不懂mysql,所以对你的第二条评论帮不上什么忙。我从您的问题中复制了cat
的路径,所以我不知道为什么它不存在。也许 MySql 没有运行?
@Idjol 很抱歉,我对此很陌生,所以请原谅我缺乏知识:) 我写了echo $PATH /usr/local/mysql/
并得到了` /Users/rodongi/.rbenv/shims:/usr /bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin /usr/local/mysql`。我不知道现在该怎么办以上是关于终端无法识别 mysqld 和 mysql 命令的主要内容,如果未能解决你的问题,请参考以下文章