【问题标题】:Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root致命错误:请阅读手册的“安全”部分以了解如何以 root 身份运行 mysqld
【发布时间】:2014-09-06 13:50:58
【问题描述】:

我不知道如何解决这个问题:

dyn-72-33-214-45:python mona$ sudo /usr/local/mysql/bin/mysqld stop
2014-09-06 09:49:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-09-06 09:49:04 22992 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.6.15-osx10.7-x86_64/data/ is case insensitive
2014-09-06 09:49:04 22992 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

2014-09-06 09:49:04 22992 [ERROR] Aborting

2014-09-06 09:49:04 22992 [Note] Binlog end
2014-09-06 09:49:04 22992 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

【问题讨论】:

  • 我想你想执行 sudo /etc/init.d/mysql stop(一个 initscript 而不是 mysqld 二进制文件)。
  • /usr/local/mysql/bin/mysqladmin -u root 关机
  • @Donal /usr/local/mysql/bin/mysqladmin -u root shutdown /usr/local/mysql/bin/mysqladmin: 连接到 'localhost' 的服务器失败错误: '无法连接通过 socket '/tmp/mysql.sock' (2)' 到本地 MySQL 服务器 检查 mysqld 是否正在运行并且 socket: '/tmp/mysql.sock' 存在!
  • 你想做什么?你想启动还是停止它? - 你确定 mysqld 真的在运行吗?
  • mysqld 正在运行吗?用这个检查它: ps -ef | grep mysqld

标签: mysql sql my.cnf


【解决方案1】:

如果你使用 root 登录,你可以试试这个:

mysqld --user=root

【讨论】:

    【解决方案2】:

    我如何解决这个问题是在这个网址的第四点之后:https://dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.html

    1. 编辑 my.cnf
    2. 在文件的[mysqld]组下添加user = root

    如果这不起作用,请确保您已更改默认密码。

    【讨论】:

      【解决方案3】:

      我使用的是 OS X (Yosemite),当我从 Mavericks 升级到 Yosemite 时发生了这个错误。用这个命令解决了

      sudo /usr/local/mysql/support-files/mysql.server start
      

      【讨论】:

      • 哇!非常感谢!无论如何,你是如何得到这个解决方案的? (谷歌在任何文档之前找到了你 :))
      • 谢谢,这对我也有帮助。
      • 虽然这个解决方案确实可以让 MySQL 运行,但它似乎不是最正确的解决方案。 MySQL 文档说此目录中的文件用于构建服务器,而不是用于一般用途。 dev.mysql.com/doc/internals/en/support-files-directory.html
      • 接下来会引发ERROR! The server quit without updating PID file 错误。我查看了 /usr/local/mysql/data/*.err 文件(名称与您的用户名一致)并指出 mysqld 由于无法连接到 /tmp/mysql.sock.lock 而中止。我已经创建了该文件(我猜是另一个用户)并且我手动删除了它。该命令现在有效。
      • 很棒的答案!我可以确认这个仍然适用于 mac os mojave!
      【解决方案4】:

      在我的情况下(RHEL7 和 MariaDB)这是可行的。

      sudo systemctl restart mariadb
      

      【讨论】:

        【解决方案5】:

        我也遇到了同样的问题,用下面的命令解决了

        /root/mysql-sandboxes/3320/bin/mysqld --defaults-file=/root/mysql-sandboxes/3320/my.cnf  --user=root &
        

        【讨论】:

          【解决方案6】:

          不应以系统用户root 执行 MySQL 守护程序,这(通常)没有任何限制。

          根据您的 cli,我想您想改为执行 initscript:

          sudo /etc/init.d/mysql stop
          

          另一种方法是使用 mysqladmin 工具(注意,root 是这里的 MySQL root 用户,而不是系统 root 用户):

          /usr/local/mysql/bin/mysqladmin --port=8889 -u root shutdown
          

          【讨论】:

          • 我正在使用 osx ! sudo: /etc/init.d/mysql: command not found
          • 由于您没有使用默认端口,您必须将您的特殊端口添加到第二个命令或套接字路径:--socket=/Applications/MAMP/tmp/mysql/mysql.sock
          【解决方案7】:

          Amazon Linux AMIcentOS

          上试试这个
          sudo service mysqld restart
          

          【讨论】:

          • IIR systemctl 在 CentOS / RHEL 中通常是首选
          【解决方案8】:

          osx 可能正在使用 launchctl 来启动 mysql。试试这个:

          sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist
          

          【讨论】:

            【解决方案9】:

            Donal 为我提供了正确的解决方案。但是,2017 年更新后的 plist 名称是

            com.oracle.oss.mysql.mysqld.plist.
            

            【讨论】:

              【解决方案10】:

              除了@mise 的回答, 安装 MacOS Mojave 后,我还必须更改所有 MAMP 目录和内容的文件所有权)。

              从 Finder 中,我进入 Application/MAMP,显示文件信息 (cmd + i),并在权限部分添加了自己的读写权限,然后从适用于所有孩子的小工具中添加。

              【讨论】:

                【解决方案11】:

                在 CentOS 上对我有用的正确答案是

                /etc/init.d/mysql restart
                

                这是一个初始化脚本,而不是 /etc/init.d/mysqld restart,它是二进制文件

                这实际上是@MrTux 对对我有用的问题的评论。我花了很多时间,因此将其发布为答案。

                【讨论】:

                  【解决方案12】:

                  要从命令行以 root 用户身份运行 mysqld,您需要添加开关/选项 --user=root

                  mariadb run as system root user

                  【讨论】:

                    【解决方案13】:

                    我在 Minikube(Ubuntu 机器)上运行 MySQL 时遇到了这个问题,我解决了这个问题:

                    sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
                    sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
                    

                    【讨论】:

                      【解决方案14】:

                      很奇怪,但是当我在 my.cnf 文件中输入错误时出现此错误。
                      所以它与user 指令未定义或未以root-user 身份运行无关。

                      我的错误是:

                      bind=192.168.1.2
                      

                      而不是

                      bind-address=192.168.1.2
                      

                      【讨论】:

                        猜你喜欢
                        • 2022-01-21
                        • 2015-04-16
                        • 1970-01-01
                        • 2011-08-26
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-09-08
                        • 1970-01-01
                        • 2020-05-01
                        相关资源
                        最近更新 更多