对于解决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)
- 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)
今天在为新的业务线搭架数据库后,在启动的时候报错
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", 得到这个错误 " 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)
连续工作 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 run
和 docker-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]权限被拒绝
我正在配置在我的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也返回权限错误),所以我想知道是否有人对解决此特定权限问题有任何建议/提示。到目前为止,我一直无法找到任何问题/后续步骤,这些问题/步骤似乎仍与我的配置类似(因为在各种情况下似乎抛出了此权限错误,而不仅限于纯粹的权限问题),但经过几次我为此感到头疼的日子,我想这里可能有两个主要问题:
- pdo_MysqL显示MysqLnd 7.4.9而不是我在dockerfile中安装的MariaDB客户端
- 访问MysqL.sock似乎需要更改权限或进行其他更改
所以我想知道是否有人有解决这些问题的技巧。如果遗漏任何东西,我深表歉意。我是Docker的新手,也是devops / sysadmin的新手。
ERROR 2002 (HY000) Can’t connect to local MySQL server through socket 解决办法
关于解决 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 解决办法的相关信息,请在本站寻找。
本文标签: