mysql_secure_installation“无法通过socket连接到本地MySQL服务器”

时间:2013-03-15 18:07:12

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

当我调用文件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脚本执行的任务可以手动执行,但在这里我必须运行脚本[不允许手动执行任务]

6 个答案:

答案 0 :(得分:15)

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

  • 暂时将MySQL配置为在程序执行时使用默认套接字位置(或者,从默认位置到自定义位置的符号链接可能正常工作)。
  • 修改脚本mysql_secure_installation,以便它使用您的自定义位置。如果我理解正确,脚本会在./.my.cnf.$$子例程的第46行附近创建一个临时配置文件$$make_config是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配置为使用非标准套接字位置,您还可以手动运行简单命令,例如删除帐户和设置密码。

答案 1 :(得分:5)

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

struct AA

答案 2 :(得分:5)

确保启动mysql或mariadb,例如:

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

我发生了同样的错误,事实证明我已经停止了MySQL服务而忘记重启它。因此,您可能希望使用如下命令检查mysql服务的状态:

mysqladmin -u root -p status

如果出现错误,则表示MySQL未运行,您可以启动MySQL服务。或者,如果您愿意,您可以肆无忌惮地尝试启动该服务,而无需先使用以下命令之一检查其状态(如果它已在运行,则无法运行):

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

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

答案 5 :(得分:0)

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

运行前:mysql_secure_installation

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

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