46

当我尝试在 mysql 中查看数据库时,出现此错误:

ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)

这会阻止我的应用程序显示...

我的 django 调试器说:

(2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/my_database' (13)")

这是我的设置文件:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'my_database',                      # Or path to database file if using sqlite3.
    'USER': 'root',                      # Not used with sqlite3.
    'PASSWORD': '****',                  # Not used with sqlite3.
    'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
    'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.

什么会导致问题?

提前致谢

4

6 回答 6

81

您需要为目录设置所有权和权限:

chown -R mysql:mysql /var/lib/mysql/ #your mysql user may have different name
chmod -R 755 /var/lib/mysql/

注意:-R使命令递归 - 如果在/var/lib/mysql/.

于 2012-06-16T19:38:12.463 回答
37

这应该适用于 Mac 用户:

sudo chown -R mysql:mysql /usr/local/mysql/
sudo chmod -R 755 /usr/local/mysql/

如果这不起作用,请尝试运行which mysql以查看您的 mysql 安装所在的位置,然后/usr/local/mysql/在上面的命令中替换为 'bin' 目录之前的任何内容。

例如,在我的系统上which mysql产生以下输出:

/usr/local/mysql/bin/mysql

所以我的道路是/usr/local/mysql/

于 2015-12-09T17:47:30.103 回答
3

在 CentOS/RedHat 上,你应该在不同的路径上做同样的事情:

chown -R mysql:mysql /data/mysql/
chmod -R 755 /data/mysql/
于 2018-03-15T11:58:39.347 回答
1
chown -R mysql:mysql /var/lib/mysql/

chmod -R 755 /var/lib/mysql/

我可以确认这两个 chmod 语句对我有用(Webmin 没有看到数据库也没有显示表)但我不确定为什么在使用 MySQL 设置可能两打服务器(Centos)之后我必须这样做过去几年。

于 2014-01-17T16:19:54.300 回答
0

osx high sierra 使用以下命令解决问题:

chown -R mysql:mysql /usr/local/mysql
于 2017-11-18T17:08:13.983 回答
0

如果您使用自制软件安装了 mariadb,您可以针对 OS X 运行以下命令

sudo chown -R mysql:mysql /var/lib/var/mysql/
sudo chmod -R 777 /usr/local/var/mysql/
于 2020-01-06T14:16:44.703 回答