我在安装了MySQL的Linux ubuntu机器上。
如果在Ubuntu机器上安装MySQL ,我看到一些人正在做以下事情:
sudo chown mysql:mysql /data/tmp
我感到困惑,我知道上述命令的含义,即将/data/tmp的所有者更改为用户“ mysql ”,并将其更改为“ mysql ”组。
但是(我的问题):
1.为什么要运行上述命令? 如果我在my_db数据库中创build了一个表,默认情况下,将在/var/lib/mysql/my_db/下由MySQL 自动创build.frm , .MYD和.MYI文件(数据文件)。 那么,上述命令是否将默认的MySQL数据目录更改为/data/tmp/而不是/var/lib/mysql/my_db/ ?
基本上,我想知道上述命令的目的和作用。 (更好的例子)
2. “mysql”所有者和组来自哪里? 在Linux机器上安装MySQL是否会自动创build“mysql”用户和组? 或者人们需要手动为linux机器创build一个mysql账户?
chown命令完全符合你的期望。 chown命令有意义,有人必须具有my.cnf ,它指向/ data / tmp,相关的系统variables或命令行标志。
在Ubuntu上(你标记了这个),MySQL通常通过apt-get来安装。 MySQL APT软件包包含在安装软件时自动创buildMySQL用户的脚本。
当你从apt-get这样的软件包pipe理器中安装mysql时, mysql用户将自动创build,权限和所有权也应该自动设置。
当一个正在运行的进程(如mysql)创build一个文件时,该文件也应该由同一个有效用户mysql 。
mysql的主目录设置在/ etc / passwd文件中:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
如果您将其更改为/ data / tmp(或任何其他目录),该目录将成为mysql的主文件夹。
最重要的是,你可以在mysqlconfiguration文件“my.cnf”中更改datadir = [mysqld]下的内容,这将是实际数据文件的存储位置
[mysqld] datadir=/var/lib/mysql
显然无论这2点,mysql用户需要访问。
**
更改主目录和/或数据导向器的原因显然是空间。 一个“最佳实践”是将/ var目录保留在* nix服务器上,但是sql数据库往往会变大,最简单的做法就是将它们移到另一个分区上。