我正在尝试在我的 Ubuntu 桌面上安装本地 LAMP。我成功安装了 PHP,但在使用 MySQL 时遇到了问题
如果 PHP 尝试连接到 MySQL,我会收到此错误:
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/testing.php on line 3 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
如果我通过命令行尝试,我会得到同样的错误:
owen@desktop:~$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)
奇怪的是“/var/run/mysqld”不存在。
运行 whereis 命令我得到以下结果:
owen@desktop:~$ whereis mysqld.sock
mysqld: /usr/sbin/mysqld /usr/share/man/man8/mysqld.8.gz
那么 MySQL 是否安装好了?根据 dpkg
owen@desktop:~$ dpkg -l | grep mysql
ii libapache2-mod-auth-mysql 4.3.9-13ubuntu1 Apache 2 module for MySQL authentication
ii libdbd-mysql-perl 4.016-1 Perl5 database interface to the MySQL database
ii libmysqlclient15off 5.1.30really5.0.83-0ubuntu3 MySQL database client library
ii libmysqlclient16 5.1.49-1ubuntu8.1 MySQL database client library
ii mysql-admin 5.0r14+openSUSE-2.1 GUI tool for intuitive MySQL administration
ii mysql-client-5.1 5.1.49-1ubuntu8.1 MySQL database client binaries
ii mysql-client-core-5.1 5.1.49-1ubuntu8.1 MySQL database core client binaries
ii mysql-common 5.1.49-1ubuntu8.1 MySQL database common files, e.g. /etc/mysql/my.cnf
ii mysql-gui-tools-common 5.0r14+openSUSE-2.1 Architecture independent files for MySQL GUI Tools
ii mysql-query-browser 5.0r14+openSUSE-2.1 Official GUI tool to query MySQL database
ii mysql-server 5.1.49-1ubuntu8.1 MySQL database server (metapackage depending on the latest version)
ii mysql-server-5.1 5.1.49-1ubuntu8.1 MySQL database server binaries and system database setup
ii mysql-server-core-5.0 5.1.30really5.0.83-0ubuntu3 MySQL database core server files
ii mysql-server-core-5.1 5.1.49-1ubuntu8.1 MySQL database server binaries
ii php5-mysql
有人能帮我吗?我真的不知道下一步该怎么做。我根本不是 Linux 专家,我运行的大多数命令都是从不同的博客和帮助论坛中找到的。
答案1
无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器
听起来你正在做一些类似的事情......
mysql_connect('localhost'....
当 mysql 客户端库看到“localhost”时,它不会费心建立网络连接 - 它使用本地文件 (unix) 套接字。为了找到此套接字,它应该检查 php.ini 设置,或使用 my.cnf 中的值,或者如果失败,则在默认值中编译。
检查 mysql 是否正在运行
ps auxwww | grep mysqld
检查其在网络套接字上的监听:
netstats -nap
上面还应该显示它正在监听哪个文件套接字。
假设这是默认安装(即监听网络端口并且没有 root 密码),您应该能够使用以下命令连接到网络套接字
mysql -u root -h 127.0.0.1
然后显示像'%sock%'这样的变量
还会显示文件系统套接字的位置。
更新你的 php.ini 设置,例如
mysql.default_socket = /var/lib/mysql/mysql.sock
并重新启动您的网络服务器。
答案2
我的机器也出现了同样的问题。尝试mysql -h 127.0.0.1
通过 tcp/ip 而不是套接字进行连接。
答案3
成功了!我终于通过运行在类似论坛帖子中找到的命令让 MySQL 正常工作了:http://ubuntuforums.org/showthread.php?t=1373144
sudo mysql_install_db
sudo /etc/init.d/mysql start
sudo dpkg-reconfigure mysql-server-5.1
谢谢大家的帮助。