GVKun编程网logo

解决 MySQL 报错 ERROR 2002 (HY000)【转】(mysql 错误2002)

1

对于解决MySQL报错ERROR2002(HY000)【转】感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解mysql错误2002,并且为您提供关于CreCan'tconnecttoloca

对于解决 MySQL 报错 ERROR 2002 (HY000)【转】感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解mysql 错误2002,并且为您提供关于CreCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sockate initial database", 得到这个错误 " ERROR 2002 (HY000)、docker-compose run mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)、Docker套接字连接到mysql尝试:PDOException代码:2002:SQLSTATE [HY000] [2002]权限被拒绝、ERROR 2002 (HY000) Can’t connect to local MySQL server through socket 解决办法的宝贵知识。

本文目录一览:

解决 MySQL 报错 ERROR 2002 (HY000)【转】(mysql 错误2002)

解决 MySQL 报错 ERROR 2002 (HY000)【转】(mysql 错误2002)

今天在为新的业务线搭架数据库后,在启动的时候报错

root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql

ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)

在此记录一下,希望能够给遇到此问题的兄弟们提供一个解决问题的思路,有了思路后一步一步排查问题就比较容易了,但是我这个问题比较奇怪,如果有了解的兄弟,还不吝赐教。

 

首先介绍一下此问题出现的环境:

操作系统为:Ubuntu 14.04.5

数据库版本为:5.6.39-log

数据库安装方式为二进制安装

 

故障现象

数据库初始化后启动报错

root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql
ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)

故障排查

一看数据库进程是否启动

如果数据库进程没有启动,也会报这个错

进程是存在的

二 看配置文件中 socket 文件的配置,并检查 socket 文件是否存在,权限是否正确

配置文件中 socket 文件的位置配置在 /tmp/mysql.sock 下

但是报错中去 /var/run/mysqld/mysqld.sock 位置找配置文件,说明配置文件并没有生效,但是比如其他数据文件,日志文件的目录已经生效

三 看错误日志中是否提供了有价值的信息

查看错误日志中没有相关的报错

 

故障解决:

问题原因一直找不到,往上翻会话的时候看到数据库初始化完成后有以下输出,

 

难道是因为数据库启动的时候读了别的位置的配置文件?

我是按以下命令启动的,已经指定了配置文件的位置

./mysqld_safe --defaults-file=/etc/my.cnf &

查看 /etc/mysql/my.cnf

确实是去找的该配置文件中 socket 的位置

 

将 /etc/mysql 路径下的配置文件重命名后

oot@qsbilldatahis-db01:/etc/mysql# cd /etc/mysql/
root@qsbilldatahis-db01:/etc/mysql# ls
conf.d  my.cnf
root@qsbilldatahis-db01:/etc/mysql# mv my.cnf my.cnf_bak

再次进入 mysql 命令行没有报错,问题解决

 

 

故障总结

可以用以下命令查看 MySQL 数据库读取配置文件的默认顺序,

其实现在我还是很纳闷,为什么我制定了配置文件袋额位置还会读取别的位置的配置文件呢?在数据库初始化后的输出有所体现,

这是问题解决就是把其他路径下的配置文件重命名

 

转自

解决 MySQL 报错 ERROR 2002 (HY000)-11774929-51CTO 博客 http://blog.51cto.com/11784929/2094722

CreCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sockate initial database

CreCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sockate initial database", 得到这个错误 " ERROR 2002 (HY000)

如何解决CreCan''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sockate initial database", 得到这个错误 " ERROR 2002 (HY000)

我尝试在 wmware 下的 Ubuntu 上安装 zabbix 并收到此消息。我根据本指南采取了步骤: https://www.zabbix.com/downloadzabbix=5.2&os_distribution=ubuntu&os_version=20.04_focal&db=mysql&ws=apache ,但在这一步“c. 创建初始数据库”,我得到这个错误“错误 2002 (HY000): 无法通过套接字连接到本地 MysqL 服务器 ''/var/run/MysqLd/MysqLd.sock '' (2) " 我该如何解决这个问题?

docker-compose run mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

docker-compose run mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

如何解决docker-compose run mysql: ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)

连续工作 14 小时后我完全被烤焦了,即使在整个互联网上爬行后我也无法解决这个问题。

场景很简单:

我有一个 docker-compose.yml,其中包含安装和部署应用程序所需的许多服务,其中包括一个简单的 MysqL 5 服务:

  (...)
  MysqL:
    environment:
      MysqL_ALLOW_EMPTY_PASSWORD: "yes"
      MysqL_ROOT_PASSWORD: 
    image: MysqL:5
    restart: always
    volumes:
      - .MysqL:/var/lib/MysqL
  (...)

现在我只想在部署应用程序之前创建初始数据库,使用一个简单的:

docker-compose run MysqL MysqL -e "CREATE DATABASE IF NOT EXISTS database"

但是无论我怎么尝试,都会出现这个错误:

Creating network "app_default" with the default driver
Creating app_MysqL_run ... done
ERROR 2002 (HY000): Can''t connect to local MysqL server through socket ''/var/run/MysqLd/MysqLd.sock'' (2)

我也试过(没有成功/有同样的错误信息):

docker-compose up -d MysqL
docker-compose exec MysqL MysqL -e "CREATE DATABASE IF NOT EXISTS database"

唯一有效的是进入容器并手动执行exact(!) same(!)命令。但我绝对需要自动化。

我错过了什么?任何形式的帮助都非常感谢!

解决方法

结果 docker-compose rundocker-compose exec 覆盖了 Dockerfile 的命令,因此 mysqld 永远不会启动。传递 mysqld && mysql -e "CREATE DATABASE database" 不起作用,在 docker-compose exec 之后运行 docker-compose up 将导致竞争条件。

我最终得到了适合我需求的以下解决方案:

docker-compose run mysql && \\
docker-compose exec mysql /bin/bash -c "while ! mysql -e \\"CREATE DATABASE IF NOT EXISTS database\\" &> /dev/null; do sleep 1; done"

这将在子容器上循环命令,直到主机容器准备就绪。此外,IF NOT EXISTS 在这里很重要,否则如果数据库已经存在,可能会陷入死锁。

Docker套接字连接到mysql尝试:PDOException代码:2002:SQLSTATE [HY000] [2002]权限被拒绝

Docker套接字连接到mysql尝试:PDOException代码:2002:SQLSTATE [HY000] [2002]权限被拒绝

如何解决Docker套接字连接到mysql尝试:PDOException代码:2002:SQLSTATE [HY000] [2002]权限被拒绝

我正在配置在我的Centos 7主机服务器上运行的docker容器中配置laravel安装。 laravel容器需要访问主机系统上的数据库;由于该数据库当前正由其他许多相互关联的项目使用,因此我目前也无法将数据库移至容器中。我研究了连接到主机数据库的过程,它看起来有两个选择:TCP或直接套接字连接。看起来执行TCP路由会涉及一些更改,这可能会影响其他项目访问数据库的方式,因此我目前正在尝试套接字路由。我已经成功配置了一切,直到axios req在docker中到达服务器后端的位置。此时,所有尝试访问数据库的后端进程都将返回此错误(通过Laravel的日志路由到STDERR并从docker访问):

(PDOException(code: 2002): sqlSTATE[HY000] [2002] Permission denied at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.PHP:70)

这是我的docker-compose.yml:

version: "2.2"
services:
 projectname:
  image: PHP:7.4-apache
  ports:
   - "8060:80"
  tty: true
  restart: unless-stopped
  working_dir: /var/www/html
  container_name: projectname
  volumes:
   - /var/lib/MysqL/MysqL.sock:/var/lib/MysqL/MysqL.sock
  build:
   context: .
   dockerfile: projectname_dockerfile

和我的dockerfile(是的,一团糟):

FROM PHP:7.4-apache
USER root
workdir /var/www/html
copY composer.lock composer.json /var/www/html/
copY override.ini /usr/local/etc/PHP/conf.d/
RUN apt-get update && apt-get install -y \\
 unzip \\
 mariadb-client
#RUN add-apt-repository ppa:ondrej/PHP
#RUN apt install -y PHP7.4-MysqL
RUN docker-PHP-ext-install MysqLi pdo_MysqL && docker-PHP-ext-enable MysqLi pdo_MysqL \\
 && a2enmod headers \\
 && a2enmod rewrite \\
 && sed -ri -e ''s/^([ \\t]*)(<\\/VirtualHost>)/\\1\\tHeader set Access-Control-Allow-Origin "*"\\n\\1\\2/g'' /etc/apache2/sites-available/*.conf
RUN curl -sS https://getcomposer.org/installer | PHP -- --install-dir=/usr/local/bin --filename=composer
copY . /var/www/html
RUN /usr/local/bin/composer install
RUN chown -R www-data:www-data /var/www/html

关于版本控制,我有:

主服务器:
操作系统:Centos 7
DB:5.5.65-MariaDB服务器
码头工人:1.13.1

容器:
PHP:7.4.9
MysqL:返回错误“无法通过套接字''/var/run/MysqLd/MysqLd.sock''连接到本地MysqL服务器”

容器中的

PHPinfo()对于PDO和MysqL显示以下内容:

PDO drivers are loaded,PDO detects a MySQL client API and socket

我必须在要通过dockerfile复制到容器中的override.ini文件中手动设置pdo_MysqL.default_socket。

Laravel似乎不是问题(容器中的MysqL也返回权限错误),所以我想知道是否有人对解决此特定权限问题有任何建议/提示。到目前为止,我一直无法找到任何问题/后续步骤,这些问题/步骤似乎仍与我的配置类似(因为在各种情况下似乎抛出了此权限错误,而不仅限于纯粹的权限问题),但经过几次我为此感到头疼的日子,我想这里可能有两个主要问题:

  1. pdo_MysqL显示MysqLnd 7.4.9而不是我在dockerfile中安装的MariaDB客户端
  2. 访问MysqL.sock似乎需要更改权限或进行其他更改

所以我想知道是否有人有解决这些问题的技巧。如果遗漏任何东西,我深表歉意。我是Docker的新手,也是devops / sysadmin的新手。

ERROR 2002 (HY000) Can’t connect to local MySQL server through socket 解决办法

ERROR 2002 (HY000) Can’t connect to local MySQL server through socket 解决办法

 
添加以下内容到 /etc/my.cnf:
[mysql]
default-character-set = utf8mb4
 
[client]
default-character-set = utf8mb4
socket = /data/mysql/mysql.sock
#需指定,否则本地 mysql 连接时会提示 “EROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''”
 
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=''SET NAMES utf8mb4''
bind-address=0.0.0.0
skip-name-resolve
innodb_buffer_pool_size = 1024M
innodb_buffer_pool_instances = 8
innodb_flush_log_at_trx_commit = 2
max_connections=10240
max_allowed_packet = 1024M
datadir=/data/mysql
socket=/data/mysql/mysql.sock
#上部 [client] 部分配置要与这里的配置统一
 
...

关于解决 MySQL 报错 ERROR 2002 (HY000)【转】mysql 错误2002的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于CreCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sockate initial database", 得到这个错误 " ERROR 2002 (HY000)、docker-compose run mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)、Docker套接字连接到mysql尝试:PDOException代码:2002:SQLSTATE [HY000] [2002]权限被拒绝、ERROR 2002 (HY000) Can’t connect to local MySQL server through socket 解决办法的相关信息,请在本站寻找。

本文标签: