Fedora에서 Mysql/Mariadb를 시작하지 못했습니다.

Fedora에서 Mysql/Mariadb를 시작하지 못했습니다.

Fedora 17에서 mysql을 시작할 수 없습니다. root계정을 사용하여 다음 명령을 실행했는데 selinux가 비활성화되었습니다 .

service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 11:29:32 SGT; 10s ago
  Process: 4251 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 4250 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 4222 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 4250 (code=exited, status=1/FAILURE)

Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Running position recovery with --log_error='/var/...er.pid'
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 11:29:32 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

journalctl -xn
-- Logs begin at Sat 2014-04-26 15:18:22 SGT, end at Tue 2014-09-23 11:29:34 SGT. --
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 acer-4930g systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mariadb.service has failed.
-- 
-- The result is failed.
Sep 23 11:29:32 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Sep 23 11:29:34 acer-4930g PackageKit[4204]: daemon quit

getenforce 
Permissive

root그런 다음 mariadb 로그 파일의 소유권을 에서 로 변경했지만 mysql여전히 실패했습니다.

[root@acer-4930g ~]# ls -ld /var/log/mariadb/
drwxr-x---. 2 mysql mysql 4096 Sep 23 11:02 /var/log/mariadb/
[root@acer-4930g ~]# ls -l /var/log/mariadb/mariadb.log 
-rw-rw----. 1 root root 554 Sep 23 11:02 /var/log/mariadb/mariadb.log
[root@acer-4930g ~]# chown -R mysql:mysql /var/log/mariadb -chR
[root@acer-4930g ~]# systemctl restart mariadb.service 
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

[root@acer-4930g ~]# systemctl status mariadb.service 
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 14:58:09 SGT; 3min 4s ago
  Process: 6890 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 6889 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 6861 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 6889 (code=exited, status=1/FAILURE)

Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aria engine is not enabled or did not start. The Aria engine...-tables
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aborting
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08  InnoDB: Starting shutdown...
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:09  InnoDB: Shutdown completed; log sequence number 1597945
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:09 [Note] /usr/libexec/mysqld: Shutdown complete'
Sep 23 14:58:09 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 14:58:09 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 14:58:09 acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 14:58:09 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

답변1

허가?

명령을 표시하고 있지만 service mysqld start접두사를 붙이고 있습니까 sudo? Q.에 포함된 출력에 "권한 거부 메시지"가 표시되기 때문에 이 서비스를 시작할 권한이 없는 것 같습니다.

Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''

이것이 실제로 사용하고 있는 것이라면 sudo위의 로그 메시지에 언급된 디렉터리와 파일에 주의를 기울이겠습니다. 다음 디렉터리/파일을 따르세요.

$ ls -ld /var/log/mariadb
$ ls -l /var/log/mariadb/mariadb.log

AskFedora Q&A에서 다음 명령을 찾았습니다.mariadb 서비스가 시작되지 않았습니다: 권한이 거부되었습니다., 이렇게 하면 문제가 해결됩니다.

$ sudo chown mysql:mysql /var/log/mariadb -chR

다음은:

$ sudo systemctl restart mariadb.service && \
    sudo systemctl status mariadb.service

MariaDB 로그 파일은 사용자의 액세스를 허용하지 않는 것 같습니다 mysql. 위 명령으로 이 문제를 해결할 수 있습니다.

데이터베이스 손상?

여전히 문제가 있고 다음 오류가 발생하는 경우:

Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.

이제 MariaDB 로그 파일의 다음 메시지를 통해 위 권한 문제가 해결되었는지 확인할 수도 있습니다.

Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
FATAL ERROR: Upgrade failed

두 메시지 모두 기본적으로 MySQL 데이터베이스를 Maria 데이터베이스로 업그레이드하는 동안 문제가 발생했음을 알려줍니다. 데이터베이스이고 그 안에 관심 있는 내용이 없으면 이동하거나 삭제할 수 있습니다. 이렇게 하려면 먼저 MariaDB 패키지를 제거한 다음 다시 설치해야 합니다.

$ sudo yum remove mariadb-server

### To remove
$ sudo rm -rf /usr/lib/mysql

### To move
$ sudo mv /usr/lib/mysql /usr/lib/mysql.orig

$ sudo yum install mariadb-server

노트:위 팁의 출처:mariadb 서비스 시작 중 문제 발생.

위 프롬프트에서 확인할 수 없는 한 가지는 이동/제거되는 디렉토리가 인지 /usr/lib/mysql여부 입니다 /var/lib/mysql. 팁에 오타가 있는지 잘 모르겠습니다. 따라서 위의 작업을 먼저 수행 /usr/lib/mysql하고 그래도 작동하지 않으면 단계를 반복하되 /var/lib/mysql.

노트: /var/lib/mysql는 데이터베이스 파일이 있는 곳이고, /usr/lib/mysql디렉터리는 다양한 플러그인이 있는 곳입니다.

관련 정보