mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13)
Posted
技术标签:
【中文标题】mysql错误:错误1018(HY000):无法读取\'.\'的目录(错误号:13)【英文标题】:mysql error : ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13) 【发布时间】:2012-06-19 10:51:44 【问题描述】:当我尝试在 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.
什么可能导致问题?
提前致谢
【问题讨论】:
您以前连接过吗?您能否在您的设置文件中进行编辑,以便我们更好地了解正在发生的事情? 如果您的系统使用 AppArmor:ar.zu.my/… 【参考方案1】:您需要为目录设置所有权和权限:
chown -R mysql:mysql /var/lib/mysql/ #your mysql user may have different name
chmod -R 755 /var/lib/mysql/
注意:-R
使命令递归 - 如果/var/lib/mysql/
中没有子目录,您可以省略它。
【讨论】:
我应该用我的mysql用户替换第一个mysql吗? 运行mysqld
守护程序的用户 - 请参阅/etc/passwd
。我相信默认是mysql
我改变了它并且它工作但现在它工作但如果我重新加载它不会......如果我再次重新加载它会
@TonyKyriakidis 你重启mysqld
了吗? (service mysqld restart
)
您还需要更改 apparmor 设置并重新加载。这是 2012 年的答案,我不确定当时是否执行了 apparmor,但我遇到了同样的问题,仅此答案并没有帮助。修复 apparmor 配置文件完成了这项工作。编辑/etc/apparmor.d/usr.sbin.mysqld
和sudo service apparmor reload
。【参考方案2】:
chown -R mysql:mysql /var/lib/mysql/
chmod -R 755 /var/lib/mysql/
我可以确认这两个 chmod 语句对我有用(Webmin 没有看到数据库也没有显示表)但我不确定为什么在设置了两打服务器 (Centos) 后我必须这样做过去几年的 MySQL。
【讨论】:
为什么你添加了与@scriptin 相同的答案,只是说它有效,但你不知道它们实际做了什么。最好在另一个答案中发表评论并投票(如果可以的话)。向其他人建议您不了解的事情是个坏主意。【参考方案3】:这应该适用于 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/
【讨论】:
我在 Google 上找到了这个,虽然我能够使用答案来解决我的问题,但我有不同的路径。所以我发布这个是为了其他可能会在这里结束的 mac 用户。 它似乎被重新安置在 Macports 下的 El Capitan 中。我不得不使用 sudo chown -R _mysql:_mysql /opt/local/var/db/mysql56/ sudo chown -R _mysql:_mysql /opt/local/var/run/mysql56/ sudo chown -R _mysql:_mysql /opt/本地/var/log/mysql56/ 谢谢。这在升级到 El Capitan 后帮助了我。 也在 OS X 上 (Mavericks 10.9) - 我的 mysql 用户是_mysql
。你可以通过ps aux |grep mysql
找到你的用户(和mysql安装目录)。【参考方案4】:
osx high sierra 使用以下命令解决问题:
chown -R mysql:mysql /usr/local/mysql
【讨论】:
【参考方案5】:在 CentOS/RedHat 上,你应该在不同的路径上做同样的事情:
chown -R mysql:mysql /data/mysql/
chmod -R 755 /data/mysql/
【讨论】:
我的/data/
在 centos 7 上是空的【参考方案6】:
如果您使用自制软件安装了 mariadb,您可以在 OS X 上运行以下命令
sudo chown -R mysql:mysql /var/lib/var/mysql/
sudo chmod -R 777 /usr/local/var/mysql/
【讨论】:
以上是关于mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13)的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 错误 [1215] [HY000] - 无法添加外键 [重复]
错误 1728 (HY000): 无法从 mysql.user 加载。该表可能已损坏
错误 2003 (HY000): 无法连接到 MySQL 服务器 (111)
错误 2002 (HY000): 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器