无法像普通用户一样启动MySQL 5.5(fedora 15)

service mysqld start给了我:

 Starting mysqld (via systemctl): Job failed. See system logs and 'systemctl status' for details. [FAILED] 

错误日志说:

 110913 05:50:44 mysqld_safe Starting mysqld daemon with databases from /home/mysql/prod 110913 5:50:44 [Warning] Can't create test file /home/mysql/prod/myhostname.lower-test 110913 5:50:44 [Warning] Can't create test file /home/mysql/prod/myhostname.lower-test 110913 5:50:44 [Note] Plugin 'FEDERATED' is disabled. 110913 5:50:44 InnoDB: The InnoDB memory heap is disabled 110913 5:50:44 InnoDB: Mutexes and rw_locks use GCC atomic builtins 110913 5:50:44 InnoDB: Compressed tables use zlib 1.2.5 110913 5:50:44 InnoDB: Using Linux native AIO 110913 5:50:44 InnoDB: Initializing buffer pool, size = 16.0M 110913 5:50:44 InnoDB: Completed initialization of buffer pool 110913 5:50:44 InnoDB: Operating system error number 13 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name /home/mysql/prod/ibdata1 InnoDB: File operation call: 'open'. InnoDB: Cannot continue operation. 110913 05:50:44 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 

哦,错误13,所以这是一个权限问题,对不对?

 chown -R mysql:mysql /home/mysql/prod 

仍然不会开始…让我们试试这个:

 /usr/libexec/mysqld --console --log-warnings --basedir=/usr --datadir=/home/mysql/prod --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock 

好吧,以便开始正常(我可以使用mysql -u root -plogin),但我甚至不知道这是做什么,它当然不是由systemctlpipe理..让我们确保mysql是一个用户:

 # grep 'mysql' /etc/passwd mysql:stuff:stuff:MySQL Server:/var/lib/mysql:/bin/bash 

我my.cnf,有点缩写(我已经尝试了以下几个变化):

 [client] #password = your_password port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] user = mysql port = 3306 basedir = /usr log_warnings = 1 datadir = /home/mysql/prod socket = /var/lib/mysql/mysql.sock log-error = /var/log/mysql.log innodb_data_home_dir = /home/mysql/prod innodb_data_file_path = ibdata1:10M:autoextend #innodb_doublewrite = on #innodb_log_group_home_dir = /home/mysql/prod 

我有点在这里亏本..谁能给我一条线?

 # ls -lah / | grep 'home' drwxr-xr-x. 6 root root 4.0K Aug 15 12:20 home # ls -lah /home | grep 'mysql' drwxr-xr-x. 6 mysql mysql 4.0K Sep 8 06:14 mysql # ls -lah /home/mysql/prod drwxr-x---. 2 mysql mysql 4.0K Sep 14 2009 bugs -rw-r--r--. 1 mysql mysql 18M Sep 13 06:17 ibdata1 -rw-r--r--. 1 mysql mysql 5.0M Sep 13 06:17 ib_logfile0 -rw-r--r--. 1 mysql mysql 5.0M Sep 13 05:23 ib_logfile1 

(删除了一些隐私的东西)

如果你使用SELinux(Fedora,SUSE,某些Ubuntu),那可能是问题所在。 你需要改变你的安全上下文为mySQL类似于:

 chcon -Rv --type=mysqld_db_t /my/new/data/dir 

或者如果您使用的是AppArmor(Ubuntu),则需要更新

 /etc/apparmor.d/usr.sbin.mysql