无法使用 Laravel 连接到本地 MySQL 服务器
Could not connect to local MySQL server with Laravel
当我 运行 这个命令时 find / -name my.cnf
我找到了 my.cnf
的两个位置
/opt/lampp/etc/my.cnf
/etc/mysql/my.cnf
我不明白 MySQL 服务器使用哪个?
而且,当我 运行 命令 php artisan migrate
时,我得到这个错误
[PDOException]
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '
/var/run/mysqld/mysqld.sock' (2)
大家可以很清楚的看到错误路径显示/var/run/mysqld/mysqld.sock
(其实我的system/desktop里面没有文件夹名"mysqld"里面的"run folder")
I have a `mysql.sock` file inside /opt/lampp/var/mysql/mysql.sock
所以,可能是什么问题。 ??请帮忙。
我在 3 小时前 在这里问过这个问题,但直到现在都没有回复。
我认为你必须卸载 lamp ,最好使用手动配置安装 mysql 并且 apache2 手动不要使用 lamp !
确保 MySQL 首先是 运行ning(简单,但很好检查!),并确保 MySQL 的正确安装是 运行(如果您有 LAMP 安装以及独立 MySQL 安装)。
如果您使用 localhost
进行连接,请尝试使用 127.0.0.1
进行连接。这可能会使用 TCP/IP 连接器而不是套接字 - 只是一种解决方法。
首先,
- 使用
$ php -i |grep php\.ini
命令在您的系统中找到您的 php.ini 文件或单击 where can I find the php.ini for php-cli。
- 打开php.ini文件。
并且,确保这些行是否存在。
a) extension=mysql.so
b)extension=pdo_mysql.so
- 如果是,请删除他们前面的 (;)。
- 如果不存在,运行 这个命令
sudo apt-get install php5-mysql
现在,输入 php artisan migrate
命令。我相信你会得到 error
can't connect to local MYSQL server through socket
现在,
- 将绑定地址从
localhost
更改为 127.0.0.1
- 运行
/opt/lampp/bin/php
。
- 在运行之后如果你得到
"unable to load dynamic library"
然后,移除php_mssql.dll extension
(对于非windows)
- 如果没有报错,直接来Project-Name-Folder/config/database.php文件添加这段代码
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
,
找到mysql.sock
的完整路径,并添加
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'danishLara'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock', //Add this line here
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
当我 运行 这个命令时 find / -name my.cnf
我找到了 my.cnf
/opt/lampp/etc/my.cnf
/etc/mysql/my.cnf
我不明白 MySQL 服务器使用哪个?
而且,当我 运行 命令 php artisan migrate
时,我得到这个错误
[PDOException]
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '
/var/run/mysqld/mysqld.sock' (2)
大家可以很清楚的看到错误路径显示/var/run/mysqld/mysqld.sock
(其实我的system/desktop里面没有文件夹名"mysqld"里面的"run folder")
I have a `mysql.sock` file inside /opt/lampp/var/mysql/mysql.sock
所以,可能是什么问题。 ??请帮忙。
我在 3 小时前
我认为你必须卸载 lamp ,最好使用手动配置安装 mysql 并且 apache2 手动不要使用 lamp !
确保 MySQL 首先是 运行ning(简单,但很好检查!),并确保 MySQL 的正确安装是 运行(如果您有 LAMP 安装以及独立 MySQL 安装)。
如果您使用 localhost
进行连接,请尝试使用 127.0.0.1
进行连接。这可能会使用 TCP/IP 连接器而不是套接字 - 只是一种解决方法。
首先,
- 使用
$ php -i |grep php\.ini
命令在您的系统中找到您的 php.ini 文件或单击 where can I find the php.ini for php-cli。 - 打开php.ini文件。
并且,确保这些行是否存在。
a)
extension=mysql.so
b)extension=pdo_mysql.so
- 如果是,请删除他们前面的 (;)。
- 如果不存在,运行 这个命令
sudo apt-get install php5-mysql
现在,输入 php artisan migrate
命令。我相信你会得到 error
can't connect to local MYSQL server through socket
现在,
- 将绑定地址从
localhost
更改为127.0.0.1
- 运行
/opt/lampp/bin/php
。 - 在运行之后如果你得到
"unable to load dynamic library"
然后,移除php_mssql.dll extension
(对于非windows)
- 如果没有报错,直接来Project-Name-Folder/config/database.php文件添加这段代码
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
,
找到mysql.sock
的完整路径,并添加
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'danishLara'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock', //Add this line here
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],