【问题标题】:mysql_secure_installation "Can't connect to local MySQL server through socket"mysql_secure_installation "无法通过套接字连接到本地 MySQL 服务器"
【发布时间】:2013-03-04 13:47:54
【问题描述】:

当我调用文件 mysql_secure_installation 时,我收到类似的错误

    [mysqk123@InstallZeMo bin]$ ./mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Enter current password for root (enter for none): 

但 my.cnf 文件中给定的 sock 文件是 /home/mysqk123/tmp/mysql.sock,我使用的是 redhat linux 5.3 和 mysql 5.1.47

我知道mysql_secure_installation脚本执行的任务可以手动执行,但是这里我必须运行脚本[不允许手动执行任务]

【问题讨论】:

    标签: mysql database-administration mysql-error-2002


    【解决方案1】:

    如果您使用 mariadb,请执行此操作

    运行前:mysql_secure_installation

    Step 1: sudo systemctl stop mariadb
    Step 2: sudo systemctl start mariadb
    Step 3: mysql_secure_installation
    

    它会询问 root 密码,您只需按 Enter 并设置新的 root 密码。

    【讨论】:

    • 我在第 1 步得到了这个:系统没有以 systemd 作为初始化系统 (PID 1) 启动。无法操作
    【解决方案2】:

    MySQL Socket 声明应位于 my.cnf 中的 [mysqld] 下(在 Debian 风格中位于 /etc/mysql/my.cnf)。 MySQL Socket 信息也可以使用以下命令找到:

    mysql> show variables like 'socket';
    +-----------------------------------------+-------------------------------+
    | Variable_name                           | Value                         |
    +-----------------------------------------+-------------------------------+
    | socket                                  | /yourpath/mysql.sock          |
    +-----------------------------------------+-------------------------------+
    1 rows in set (0.00 sec)
    

    更新当前会话的环境变量并执行命令,例如:

    export MYSQL_UNIX_PORT=/home/mysql123/tmp/mysql.sock
    ./mysql_secure_installation
    

    【讨论】:

    • 你从哪里得到 mysql.sock 路径
    • 修复了由于在运行 mariadb-secure-installation 之前移动 mysql datadir 而导致的 mariadb-secure-installation 问题。下次,坚持安装流程并在 mariadb 安装后立即运行 mariadb-secure-installation... 然后移动 datadir。
    【解决方案3】:

    确保你启动了mysql或mariadb,例如:

    sudo systemctl start mariadb.service
    sudo systemctl enable mariadb.service
    

    【讨论】:

      【解决方案4】:

      我也发生了同样的错误,结果我已经停止了 MySQL 服务并忘记重新启动它。因此,您可能需要使用以下命令检查 mysql 服务的状态:

      mysqladmin -u root -p status

      如果出现错误,说明 MySQL 没有运行,可以启动 MySQL 服务。或者,如果您愿意,您可以不先检查其状态(如果它已经在运行,则无法使用),使用以下命令之一鲁莽地尝试启动该服务:

      /etc/init.d/mysql start
      service mysql start
      

      如果您的系统使用的是该版本的 MySQL,请将 mysqld 替换为 mysqld

      【讨论】:

        【解决方案5】:

        您还可以对套接字文件进行符号链接,然后将其删除:

        ln -s /home/mysqk123/tmp/mysql.sock /var/lib/mysql/mysql.sock
        mysql_secure_installation # Do your stuff
        rm -rf /var/lib/mysql/mysql.sock
        

        【讨论】:

          【解决方案6】:

          由于此实用程序旨在通过标准安装使用,并且因为它似乎不接受任何参数,所以我看到的选项很少:

          • 临时将 MySQL 配置为在执行过程时使用默认套接字位置(或者,从默认位置到您的自定义位置的符号链接可能会起作用)。
          • 修改脚本mysql_secure_installation,使其使用您的自定义位置。如果我理解正确,该脚本会在 make_config 子例程的第 46 行附近创建一个临时配置文件为 ./.my.cnf.$$$$ 是 pid)。

          修改如下: (免责声明:未经测试:)

          make_config() {
              echo "# mysql_secure_installation config file" >$config
              echo "[mysql]" >>$config
              echo "user=root" >>$config
              echo "password='$rootpass'" >>$config
              # add the line below
              echo "socket=/home/mysqk123/tmp/mysql.sock" >>$config
          }
          

          同样,此脚本旨在用于标准的开箱即用安装。告诉您的老板(或您的客户),如果您能够将 MySQL 配置为使用非标准套接字位置,您还可以手动运行简单的命令,例如删除帐户和设置密码。

          【讨论】:

          • 从 MySQL 5.7.2 开始,mysql_secure_installation.sh 将被替换为接受命令行选项的二进制文件,特别是 --socket=path。我还没有测试它,但我会在了解更多信息时更新答案。
          • 是的,在我不得不恢复我的 root 密码后,昨晚我使用了相同的修复程序。我必须有标准安装,因为我在星期六第一次运行它时运行良好。只有在随后的运行中,我才发现它更喜欢“/tmp/mysql.sock”路径。有什么变化?!当然不是my.cnf 文件。而且我没有在脚本本身中找到那个套接字路径。 什么给了
          猜你喜欢
          • 2011-01-12
          • 2019-06-01
          • 2019-07-03
          • 2017-01-21
          • 2020-11-14
          • 2017-10-07
          • 2013-02-17
          • 1970-01-01
          相关资源
          最近更新 更多