我把my.cnf里面的 【client】 和 【mysqld】 分别修改为: socket = /var/run/mysqld/mysql.sock依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
既然用 mysql -u root -p 连接不上去,那我就尝试用: mysql -h 127.0.0.1 成功了,如下:Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.39 MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trade of Oracle Corporation and/or its affiliates. Other names may be trades of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.07 sec)
但是有个问题: 一般最开始登陆进入mysql后,都会默认有 4 个数据库,分别是: information_schema mysql performation_schema test但是我用 mysql -h 127.0.0.1 登陆进去后发现,只有上面的 2 个数据库: information_schema | | test 这是为什么啦?到底是怎么回事? 谁能帮忙解答下?
1. 第一个问题你可以修改你MYSQLD 的socket默认路径 回复:我修改过了,还是提示原来同样的错误2. 权限问题,[email protected]没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了 回复:现在的问题是这样的: 我采用如下方法(重新创建mysqld.sock)解决了,可以正常登陆。 root@*****-VirtualBox:~# mkdir /var/run/mysqld root@*****-VirtualBox:~# ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock root@*****-VirtualBox:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. ...... ...... .......mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ ---->4 个默认的数据库 当我用 127.0.0.1 登陆查看数据库,竟然只有 2 个数据库了,这是为什么? mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+请教,为什么用localhost登陆会显示 4个完整的数据库,而用 127.0.0.1登陆时,只显示 2 个数据库?而且这种方法治标不治本,当我重启系统后mysqld.sock就消失了。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
我想是不是 有多个mysql实例?
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限: 用localhost登录,先看看都有那些用户可以从什么地址访问 SELECT `user`, `host` FROM `mysql`.`user`; 然后再看看访问权限,比如 SHOW GRANTS FOR 'root'@'localhost'; 既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同
其实,我在 6 楼的方法(重新创建mysqld.sock),这种方法治标不治本,当我重启系统后mysqld.sock就消失了,我又需要重新建立mysql.sock 。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。我用 mysql -u root -p 无法登陆,因为会一直报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
【client】 和 【mysqld】
分别修改为:
socket = /var/run/mysqld/mysql.sock依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
mysql -h 127.0.0.1
成功了,如下:Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.39 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trade of Oracle Corporation and/or its
affiliates. Other names may be trades of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.07 sec)
但是有个问题:
一般最开始登陆进入mysql后,都会默认有 4 个数据库,分别是:
information_schema
mysql
performation_schema
test但是我用 mysql -h 127.0.0.1 登陆进去后发现,只有上面的 2 个数据库:
information_schema |
| test 这是为什么啦?到底是怎么回事? 谁能帮忙解答下?
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?
错误日志内容如下:
141028 16:09:46 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 16:09:46 [Note] Event Scheduler: Purging the queue. 0 events
141028 16:09:46 InnoDB: Starting shutdown...
141028 16:09:47 InnoDB: Shutdown completed; log sequence number 1595675
141028 16:09:47 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 16:09:47 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:13:08 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:13:08 [Note] Plugin 'FEDERATED' is disabled.
141028 16:13:08 InnoDB: The InnoDB memory heap is disabled
141028 16:13:08 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:13:08 InnoDB: Compressed tables use zlib 1.2.3
141028 16:13:08 InnoDB: Using Linux native AIO
141028 16:13:08 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:13:08 InnoDB: Completed initialization of buffer pool
141028 16:13:09 InnoDB: highest supported file format is Barracuda.
141028 16:13:09 InnoDB: Waiting for the background threads to start
141028 16:13:10 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:13:10 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39' socket: '/tmp/mysql.sock' port: 0 MySQL Community Server (G
PL)
141028 16:32:28 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 16:32:28 InnoDB: Starting shutdown...
141028 16:32:29 InnoDB: Shutdown completed; log sequence number 1595675
141028 16:32:29 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 16:32:29 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:33:00 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:33:01 [Note] Plugin 'FEDERATED' is disabled.
141028 16:33:01 InnoDB: The InnoDB memory heap is disabled
141028 16:33:01 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:33:01 InnoDB: Compressed tables use zlib 1.2.3
141028 16:33:01 InnoDB: Using Linux native AIO
141028 16:33:01 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:33:02 InnoDB: Completed initialization of buffer pool
141028 16:33:02 InnoDB: highest supported file format is Barracuda.
141028 16:33:02 InnoDB: Waiting for the background threads to start
141028 16:33:03 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:33:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 16:33:03 [Note] - '0.0.0.0' resolves to '0.0.0.0';
141028 16:33:03 [Note] Server socket created on IP: '0.0.0.0'.
141028 16:33:03 [Note] Event Scheduler: Loaded 0 events
141028 16:33:03 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server
(GPL)
141028 17:06:23 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 17:06:23 [Note] Event Scheduler: Purging the queue. 0 events
141028 17:06:23 InnoDB: Starting shutdown...
141028 17:06:24 InnoDB: Shutdown completed; log sequence number 1595675
141028 17:06:24 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 17:06:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 17:06:54 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 17:06:55 [Note] Plugin 'FEDERATED' is disabled.
141028 17:06:55 InnoDB: The InnoDB memory heap is disabled
141028 17:06:55 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 17:06:55 InnoDB: Compressed tables use zlib 1.2.3
141028 17:06:55 InnoDB: Using Linux native AIO
141028 17:06:55 InnoDB: Initializing buffer pool, size = 128.0M
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56 InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note] - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server
(GPL)
root@gaoyu-VirtualBox:~# tail /usr/local/mysql/data/gaoyu-VirtualBox.err
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56 InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note] - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)没有任何异常信息。
我发现 用 127.0.0.1 能正常登陆,但是用 root 或者其他用户都无法登陆并且提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
2. 权限问题,[email protected]没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
1. 第一个问题你可以修改你MYSQLD 的socket默认路径
回复:我修改过了,还是提示原来同样的错误2. 权限问题,[email protected]没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
回复:现在的问题是这样的:
我采用如下方法(重新创建mysqld.sock)解决了,可以正常登陆。
root@*****-VirtualBox:~# mkdir /var/run/mysqld
root@*****-VirtualBox:~# ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock
root@*****-VirtualBox:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
......
......
.......mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+ ---->4 个默认的数据库
当我用 127.0.0.1 登陆查看数据库,竟然只有 2 个数据库了,这是为什么?
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+请教,为什么用localhost登陆会显示 4个完整的数据库,而用 127.0.0.1登陆时,只显示 2 个数据库?而且这种方法治标不治本,当我重启系统后mysqld.sock就消失了。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;
然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';
既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同
其实,我在 6 楼的方法(重新创建mysqld.sock),这种方法治标不治本,当我重启系统后mysqld.sock就消失了,我又需要重新建立mysql.sock 。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
问题1: error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
问题2: 在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?终于看到关键信息了
其实你自己已经找到文件原因了
mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
LZ你这是误导大伙,把两个修改一样就可以了
没有误导大家,你都没有看到 我的 my.cnf文件内容,如何知道mysqld字段的sock文件和client段的文件名不一样!!!下面是my.cnf文件 部分内容:
如果有你确定你MYSQL用的是这个配置文件
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。我用 mysql -u root -p 无法登陆,因为会一直报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
难道是对'/var/run/mysqld文件夹没有权限?
每次我建立文件夹 mysqld,重启系统后这个文件夹mysqld就会消失。