无法从命令行启动mysql服务器,同时保持首选项窗格正常工作

rslzwgfq  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(183)

我运行的是macos mojave,刚刚用官方安装程序安装了mysql。我可以从首选项窗格中毫无问题地启动/停止服务器。但从命令行我总是被拒绝权限:

$ mysql.server start
Starting MySQL
./usr/local/mysql/bin/mysqld_safe: line 144: /usr/local/mysql/data/mysqld.local.err: Permission denied
/usr/local/mysql/bin/mysqld_safe: line 144: /usr/local/mysql/data/mysqld.local.err: Permission denied
/usr/local/mysql/bin/mysqld_safe: line 199: /usr/local/mysql/data/mysqld.local.err: Permission denied
/usr/local/mysql/bin/mysqld_safe: line 144: /usr/local/mysql/data/mysqld.local.err: Permission denied
 ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysqld.local.pid).

我也试过了 mysqld 以及 mysqld_safe 具有相同结果的命令。
数据目录的所有者是\u mysql用户:

$ ls -l mysql/
drwxr-x---  42 _mysql  _mysql    1344 Nov  5 21:14 data

我会的 su _mysql 'mysql.server start' 例如,但我不知道 _mysql 如果它有,我想它不是一个登录帐户。
那么如何从命令行启动服务器呢?

更新

正如官方mysql文档在这里解释的那样,要以普通用户身份运行服务器,必须递归地拥有数据目录:

$ chown bob -R /usr/local/mysql/data

我可以使用上面的任何命令从命令行启动/停止服务器,也可以连接到服务器。
问题是,现在它不工作的首选项窗格!现在的问题是:有没有办法让pref窗格恢复工作?最重要的是,为什么会这样?

vkc1a9a2

vkc1a9a21#

mysqld_safe 只是一个 Package mysqld 命令,该命令将使用正确的用户为您启动mysql服务器。
但是,您应该使用 sudo . 如果您找到或设法替换mysql用户的密码,您可以直接使用 mysqld 命令。
因此,快速启动服务器的方法是: sudo mysqld_safe .
更多细节可以在mysql文档中找到:启动服务器

a0x5cqrl

a0x5cqrl2#

所以不,在mac os lion上的start mysql server from command line中找不到解决方案,但在这里基本上可以找到,在那篇文章中,他们解释了launchd服务使用的pid文件(pref窗格使用该服务)与 msqld 使用:
首选项窗格称之为
mysqld.local.pid msqld 叫它 the_name_of_your_localhost.local.pid 因此,如果从窗格启动服务器,会弄乱pid文件的名称,然后命令会混淆,因为它会查找不同名称的pid文件。反之亦然。
我们可以在错误日志文件中找到相同的命名问题。
我还发现套接字文件的名称也不同: /tmp/mysql.sock 对于命令 /tmp/mysqlx.sock 对于服务/窗格
也许有一种方法可以使用配置文件来使用统一的名称,但我无法让它工作。至少现在我明白了这个问题,尽管我不知道如何解决它。同时,我必须选择:命令行或首选项窗格,但不能两者都选择。它们不兼容;-)

相关问题