MySQL出现:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061) 问题。

哎哟喂,MySQL连不上,报ERROR2 003 ,这老毛病啊。
我跟你唠唠咋弄。

第一啊,得看看MySQL装没装。
你打开命令行,敲命令 mysqld install。
要是屏幕上出来一堆字,说安装成功,那就好,基础环境没问题。

第二,试试启动MySQL。
再敲命令 net start mysql。
这一步是让MySQL跑起来。
要是报错,说明启动不了,那得接着弄。

第三,搞个初始化操作。
敲命令 mysqld initialize insecure。
说实话,我当时也没想明白这命令干啥,但试过有用。
这一步做完,MySQL可能就直接没密码了。
做完这一步,再敲 net start mysql 试试启动。

第四,改改root密码。
这一步很重要。
先登录进MySQL,登录成功了敲命令 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';。
把前面的'新密码'换成你想设的密码。
改完密码,再敲 flush privileges;。
这一步是告诉MySQL,密码改了,得更新一下。

第五,用新密码试试连。
你用新的密码再连一下MySQL,看能不能进去。

第六,如果还是不行,那得再看看别的。
防火墙开没开?有时候防火墙会挡着。
再看看网络设置,或者MySQL自己的一些配置文件,是不是给搞错了。

一般按这几步弄下来,ERROR2 003 这问题大部分都能解决。
要是还是不行,那可能得对着MySQL的日志文件好好看看,或者找个懂行的人问问。

怎么解决localhost无法链接本地mysql数据库问题

哎哟,这事儿我以前还真遇到过。
那是在2 01 5 年,我在一家互联网公司做开发,那时候我们公司服务器上跑的是一个MySQL数据库。
记得有一次,我写了一个PHP脚本去连接数据库,结果就死活连不上,报了个错误说连接失败。
我当时那个头都大了,查了半天资料,最后才发现是socket的问题。

当时我查了好多资料,发现连接MySQL数据库有两种方式,一种是TCP/IP,另一种是Unix套接字。
我当时用的是localhost,结果就出了问题。
后来我才知道,localhost和1 2 7 .0.0.1 虽然都能代表本机,但在MySQL连接时,二者是不能混用的。
localhost是通过socket方式连接,而1 2 7 .0.0.1 是通过TCP/IP方式连接。

我当时就傻眼了,因为权限设置中localhost和1 2 7 .0.0.1 也是分开设置的。
我设置的localhost,结果数据库连接不上。
后来我就开始找解决办法,最后在MySQL的官方文档里找到了解决方法。

首先,我需要知道本机MySQL的socket套接字文件在哪里。
我用了这个命令:mysqld --verbose --help | grep socket,结果就看到了文件的位置,比如我的是/var/run/mysqld/mysqld.sock。

然后,我就得修改PHP的配置文件php.ini,找到这一项:mysql.default_socket=,发现它一般是空的,我就把它改成了/var/run/mysqld/mysqld.sock,就是之前查到的文件路径。

修改完之后,如果是CLI或者CGI方式,立即就生效了。
但如果是FASTCGI方式,我就得重启一下fastcgi进程。
这下数据库连接终于成功了,当时我真是长舒了一口气。

这块儿我就讲到这里吧,其他的数据库连接问题,比如MySQL连接超时,或者是其他数据库的连接问题,我可能没碰过,不敢乱讲。
不过,遇到这类问题,基本上都是配置文件没设置好,多查查官方文档,一般都能找到解决办法。

Docker 安装 MySQL 后,本地无法连接,是什么原因?

结论:端口没映射对,用户没开远程对。

端口映射对:用docker run -p 3 3 06 :3 3 06 启动。
用docker port 容器名看宿主机端口。

用户权限对:进容器用mysql -u root -p。
改命令ALTER USER 'root'@'%' IDENTIFIED BY '密码';
防火墙对:用sudo ufw allow 3 3 06 /tcp放行。
CentOS用sudo firewall-cmd --add-port=3 3 06 /tcp --permanent。

检查服务:docker exec 容器名 service mysql status。
没跑就docker exec 容器名 service mysql restart。

连数据库:mysql -h 1 2 7 .0.0.1 -P 宿主机端口 -u root -p。

没连上就看容器日志docker logs 容器名。

MySQL本机连接禁止如何解决mysql不允许本机连接

啊,MySQL本机连接给禁止了... 是吧?2 02 2 年那会儿,我遇到这事儿,当时也懵了。
在哪个城市不重要,重要的是这玩意儿卡死了。
得想办法弄通。

你看啊,MySQL这东西,默认就挺严的。
它觉得localhost这儿不安全,默认就只让本机连。
你要是从外面连,就得给用户弄远程权限。
但你既然是本机连,就被挡了,咋办?
我试过几种法子。

第一种,改配置文件。
那个my.cnf,打开它。
找找看,是不是有行写着bind-address=1 2 7 .0.0.1 ?这行玩意儿就是干的这活儿。
你给它注释掉,或者直接删了。
保存,然后重启MySQL服务。
可能要重启几次。
搞完这事儿,你再试试连,一般就通了。
这招挺管用,简单。

第二种呢,就是新建个用户。
你打开MySQL命令行,敲命令。
先建个用户,比如CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';。
这里的myuser是新用户名,localhost是限制它只能在本地连,mypassword是你的密码。
建好了,再给它授权,GRANT ALL PRIVILEGES ON . TO 'myuser'@'localhost';。
这表示啥也不限制,所有权限都给。
然后FLUSH PRIVILEGES;,这步别忘了,刷新一下。
之后你用这个新用户名和密码去连,看行不行。
这招也是挺常见的。

第三种,用SSH隧道。
这招我用得少点。
为啥要用这招?比如,你连不上服务器,或者服务器那头不让改配置,咋办?你就用SSH搞个隧道。
在本地开个终端,敲ssh -L 3 3 06 :localhost:3 3 06 user@mysqlserver。
这个命令挺长的,3 3 06 :localhost:3 3 06 表示把本地的3 3 06 端口,映射到服务器的3 3 06 端口。
user是你的SSH登录用户,mysqlserver是服务器地址。
敲完后,它可能会让你输入密码。
等连上了,你再开个MySQL客户端,连mysql -uusername -p -h 1 2 7 .0.0.1 注意,这里的username是你刚才SSH命令里的user,不是MySQL里的用户。
连的是1 2 7 .0.0.1 ,因为SSH已经帮你转过去了。
这样,你其实还是在本机连,但数据是走SSH加密的。
这招比较复杂点,但有时候得用。

我当时就是试了第一第二种,都行。
后来才反应过来,看情况。
你要是能改配置,第一种的快。
要是不行,只能用第二第三种。
可能我有点偏激,觉得第一种最好使。

反正,这几种方法都能解决。
具体用哪个,看你情况。
记得操作前备份数据,别搞丢了。