【问题标题】:MySQL installation from deb, permissions issues从 deb 安装 MySQL,权限问题
【发布时间】:2014-09-18 16:31:45
【问题描述】:

我正在尝试通过 deb 包在 ubuntu 14.04 上安装 MySQL。我在启动 mysql 服务器时遇到问题,它看起来像是权限问题。我按照here 列出的步骤进行操作。下载/解压缩/安装 deb tar 包。

sudo apt-get install libaio1 
tar -xvf mysql-server_5.7.4-m14-2ubuntu14.04_amd64.deb-bundle.tar 
md5sum mysql-server_5.7.4-m14-2ubuntu14.04_amd64.deb-bundle.tar 
sudo dpkg -i mysql-common_5.7.4-m14-2ubuntu14.04_amd64.deb 
sudo dpkg -i mysql-community-server_5.7.4-m14-2ubuntu14.04_amd64.deb 
sudo dpkg -i mysql-community-client_5.7.4-m14-2ubuntu14.04_amd64.deb 
sudo dpkg -i libmysqlclient18_5.7.4-m14-2ubuntu14.04_amd64.deb

这里是我的系统上安装文件的位置: 所有配置文件(如my.cnf)都在/etc 下。 所有二进制文件、库、头文件等都在/usr 下。 数据目录在/var 下。

关注these instructions

我创建了一个mysql组和用户:

groupadd mysql
useradd -r -g mysql mysql

我将 mysql 脚本的所有权更改为 mysql(按照说明,但怀疑这是必要的)

cd /usr/bin
sudo chown mysql mysq*
sudo chgrp mysql mysq*

我运行 mysql_install_db 来设置授权表

sudo mysql_install_db --user=mysql

我将 mysql 脚本的所有权和组切换回 root。

cd /usr/bin
sudo chown root mysq*
sudo chgrp root mysq*

我将/data的所有权和组更改为mysql。位置是/var/lib/mysql

cd /var/lib
ls -l mysql
total 122896
-rw-rw-rw- 1 mysql mysql       56 Jul 26 10:17 auto.cnf
-rw-rw-rw- 1 mysql mysql 12582912 Jul 26 10:17 ibdata1
-rw-rw-rw- 1 mysql mysql 50331648 Jul 26 10:17 ib_logfile0
-rw-rw-rw- 1 mysql mysql 50331648 Jul 24 17:36 ib_logfile1
-rw-rw---- 1 mysql mysql 12582912 Jul 26 10:17 ibtmp1
drwxrwxrw- 2 mysql mysql     4096 Jul 24 17:36 mysql
drwxrw-rw- 2 mysql mysql     4096 Jul 24 17:36 performance_schema
drwxrw-rw- 2 mysql mysql     4096 Jul 24 17:36 test

现在,当我尝试启动 mysql 服务器时,出现权限错误:

mysqld_safe --user=mysql &
[4] 5680
/var/lib$ 140727 00:42:17 mysqld_safe Logging to '/var/log/mysql/error.log'.
cat: /var/run/mysqld/mysqld.pid: Permission denied
rm: cannot remove ‘/var/run/mysqld/mysqld.pid’: Permission denied
140727 00:42:17 mysqld_safe Fatal error: Can't remove the pid file:
/var/run/mysqld/mysqld.pid
Please remove it manually and start /usr/bin/mysqld_safe again;
mysqld daemon not started
/usr/bin/mysqld_safe: 129: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied

同样,如果我尝试以 root 身份启动服务器:

mysqld_safe -p -u root
140727 00:54:08 mysqld_safe Logging to '/var/log/mysql/error.log'.
140727 00:54:08 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/bin/mysqld_safe: 129: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied
/usr/bin/mysqld_safe: 1: eval: cannot create /var/log/mysql/error.log: Permission denied
140727 00:54:08 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
/usr/bin/mysqld_safe: 129: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied

显然有很多地方我应该更改权限,这看起来不像是要走的路。三个问题:

  1. 是否有一些明显的地方出错了,或者我应该卸载并 apt-get 一切?

  2. 对于服务器需要更新的所有文件,我应该拥有所有者 mysql 和组 mysql 吗?

  3. 是否有这些文件所在位置的完整列表?

【问题讨论】:

    标签: mysql linux permissions


    【解决方案1】:

    您无法创建 /var/log/mysql/error.log。如果目录不存在,先创建目录

    sudo mkdir -p /var/log/mysql
    

    接下来,更改所有权

    sudo chown -R mysql /var/log/mysql
    

    然后再次尝试以 root 身份启动服务器:

    sudo mysqld_safe --user=mysql &
    

    如果服务器未启动,请在此处粘贴错误消息

    【讨论】:

    • 更改权限后服务器启动。 error.log 包含几百个这样的警告:[ERROR] InnoDB: Unable to lock ./ibdata1, error: 11,[ERROR] InnoDB: Could not open or create the system tablespace.[ERROR] Plugin 'InnoDB' init function returned error.,[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.,[ERROR] Unknown/unsupported storage engine: InnoDB,[ERROR] Aborting。请注意,在我启动服务器后,我无法停止它,使用mysqladmin -u root shutdown 通过调用 root、密码等的任何变体。
    • 此外,在启动时 mysql 服务器尝试自动启动并失败(可能是因为它没有以 linux root 身份启动?)。我真的很感激解释:mysql用户需要拥有哪些文件this声称只有/data需要它,以及为什么我只能以linux root身份启动mysql服务器(不是重点将所有权更改为不必这样做?)-谢谢!
    • 在启动时,所有进程都以 root 身份启动(例如 sudo mysqld_safe --user=mysql)。这些错误也可以在 /var/log/messages 文件中看到。但在大多数情况下未能锁定 ibdata1 意味着您已经启动了 mysql 服务器。看here:
    • 我已经接受了答案,尽管我仍然不清楚我的主要问题:我应该在哪些目录上更改所有权以避免将来出现权限问题? /var/log/mysql 是唯一的,还是我应该更改安装期间创建并命名为 mysql 的所有目录的权限。我目前正在旅行,所以我想我们可以暂时关闭它。我可能会在几周后回到 MySQL 问题。 -谢谢!
    • --user=mysql 表示 mysql 在以该用户 (mysql) 启动后执行。因此,正确操作所需的所有文件和文件夹必须由该用户完全访问,即您必须将所有权设置为用户 mysql
    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多