AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 404007
Accepted
John
John
Asked: 2012-07-03 01:01:42 +0800 CST2012-07-03 01:01:42 +0800 CST 2012-07-03 01:01:42 +0800 CST

到 mysql 数据库的符号链接

  • 772

我不得不在一个数据库上建立一个符号链接到 MySQL (Debian 6.0) 上的另一个位置。所以/var/lib/mysql/dbname指向/home/user/dbname,但 MySQL 给出

MySQL 错误:1017(找不到文件:'./dbname/tbl201206.frm'(错误号:13))

我已经阅读了一些关于在数据目录或表文件上创建符号链接的手册,但是 mysqld 也可以读取这种链接吗?

linux mysql permissions file-permissions
  • 2 2 个回答
  • 8569 Views

2 个回答

  • Voted
  1. Best Answer
    Ladadadada
    2012-07-03T01:09:03+08:002012-07-03T01:09:03+08:00

    错误代码(errno: 13)表示权限被拒绝。检查mysql用户是否有读写权限/home/user/dbname及其下的所有文件。

    您可以使用sudo su mysql然后一些访问文件的命令来执行此操作,例如file /home/user/dbname/tbl201206.frm.

    要修复它,您可能想要这样做chown -R mysql:mysql /home/user/dbname。您可能还需要chmod +x /home/user.

    • 5
  2. mak
    2013-06-04T08:39:35+08:002013-06-04T08:39:35+08:00

    如果您正在运行 Ubuntu(可能还有其他最新的 Linux 版本),那么即使文件权限正确,MySQL 也可能会被拒绝访问您的文件位置。这是由AppArmor引起的,AppArmor是一个实现基于名称的强制访问控制的 Linux 安全模块。要检查您是否正在运行 AppArmor,请尝试以下命令:

    $ sudo apparmor_status
    

    如果这有效并且包括 mysqld,您可能需要更改您的配置。这已在andol 在 AskUbuntu 上的一篇有用的帖子中进行了描述,但这只是乍一看才解决了我的问题(为了方便,我在下面复制了 andol 的帖子,以防其他页面发生变化)。

    移动数据库文件并放置一个符号链接后,该文件没有进一步增长,而是写入了主 InnoDB 文件(即使我过去确实innodb_file_per_table有单独的数据库文件)。我现在假设 andol(以及网络上的许多其他地方)在帖子中建议的更改实际上是不够的。我最终移动了我的整个 MySQL 数据目录并编辑了 AppArmor 文件/etc/apparmor.d/tunables/alias(没有其他文件)来进行移动(文档在文件中)。这在 Ubuntu 12.4(精确)上正常工作。


    这是 andol 写的——正如我上面所说,这对我不起作用。

    让我们假设您的新数据目录为/home/data/mysql。

    如果您打开文件/etc/apparmor.d/usr.sbin.mysqld,您将在规则中找到这两行。

    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    

    假设我们上面的例子,它们将不得不被这两行替换或(可能更可取)补充。

    /home/data/mysql/ r,
    /home/data/mysql/** rwk,
    

    在我们使用新的数据目录启动 MySQL 服务器之前,我们还必须显式地重新加载新的 apparmor 配置文件。

    $ sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
    

    • 5

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve