Ubuntu 20.04 MySQL Datadir Permissions (Errno 13)

askubuntu.com, мне нужна помощь в отладке настроек MySQL! Последние пару лет я размещал свои локальные ресурсы для разработки в Dropbox, и это прекрасно работает. На прошлой неделе я решил стереть свой компьютер и использовать Ubuntu вместо Linux Mint на этот раз (не имеет значения, но ууу!). Итак, к важным деталям:

Настройки

Запись datadir в /etc/mysql/mysql.conf.d/mysqld. cnf определяется как datadir = "/ home / tehccount / Dropbox / DesignInk Digital / Kyle / Development Databases / mysql" .

Разрешения для / home / tehccount / Dropbox / DesignInk Digital / Kyle / Development Databases 777 (грустное лицо, но я пытаюсь исключить возможности на этом этапе), а владельцем / группой пользователей является mysql: mysql , рекурсивно.

Я определил псевдоним Apparmor в /etc/apparmor.d/tunables/alias как псевдоним / var / lib / mysql / -> "/ home / tehccount / Dropbox / DesignInk Digital / Кайл / Разработка баз данных / mysql / ", . Я также добавил записи в /etc/apparmor.d/usr.sbin.mysqld как

# Allow data dir access
  /var/lib/mysql/ r,
  "/home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/" r,
  /var/lib/mysql/** rwk,
  "/home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/**" rwk,

. Кроме того, во время тестирования я удалил MySQL из списка принудительных мер, используя инструкции в ( Как отключить AppArmor for MySQL ), поэтому Apparmor не должен влиять на процесс вообще. Мой вывод из sudo aa-status :

apparmor module is loaded.
39 profiles are loaded.
39 profiles are in enforce mode.
   /snap/core/9289/usr/lib/snapd/snap-confine
   /snap/core/9289/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /snap/snapd/7777/usr/lib/snapd/snap-confine
   /snap/snapd/7777/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince//sanitized_helper
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/tcpdump
   /{,usr/}sbin/dhclient
   ippusbxd
   lsb_release
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
   snap-update-ns.core
   snap-update-ns.gimp
   snap-update-ns.snap-store
   snap-update-ns.spotify
   snap.core.hook.configure
   snap.gimp.gimp
   snap.gimp.hook.install
   snap.gimp.hook.post-refresh
   snap.snap-store.snap-store
   snap.snap-store.ubuntu-software
   snap.snap-store.ubuntu-software-local-file
   snap.spotify.spotify
0 profiles are in complain mode.
3 processes have profiles defined.
3 processes are in enforce mode.
   /usr/sbin/cups-browsed (1066) 
   /usr/sbin/cupsd (980) 
   /snap/snap-store/454/usr/bin/snap-store (2422) snap.snap-store.ubuntu-software
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Выходы

Команда sudo service mysql start производит вывод

Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

Вывод mysqld из команды journalctrl - xe равно

Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.016428Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.016478Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20-0ubuntu0.20.04.1) starting as process 6655
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.018301Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.018309Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/ is case insensitive
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.018491Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/' (OS errno: 13 - Permission denied)
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.018547Z 0 [ERROR] [MY-010119] [Server] Aborting
Jun 12 19:28:26 tehccount mysqld[6655]: 2020-06-12T23:28:26.018619Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20-0ubuntu0.20.04.1)  (Ubuntu).
Jun 12 19:28:26 tehccount systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE

Вывод команды sudo systemctl status mysql.service равен

mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2020-06-12 19:28:27 EDT; 5min ago
    Process: 6671 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Process: 6679 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
   Main PID: 6679 (code=exited, status=1/FAILURE)
     Status: "Server startup in progress"
      Error: 13 (Permission denied)

Jun 12 19:28:27 tehccount systemd[1]: mysql.service: Scheduled restart job, restart counter is at 5.
Jun 12 19:28:27 tehccount systemd[1]: Stopped MySQL Community Server.
Jun 12 19:28:27 tehccount systemd[1]: mysql.service: Start request repeated too quickly.
Jun 12 19:28:27 tehccount systemd[1]: mysql.service: Failed with result 'exit-code'.
Jun 12 19:28:27 tehccount systemd[1]: Failed to start MySQL Community Server.

Вывод команды sudo -u mysql / usr / sbin / mysqld is

2020-06-12T23:36:08.460482Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2020-06-12T23:36:08.460535Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20-0ubuntu0.20.04.1) starting as process 6866
2020-06-12T23:36:08.462316Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2020-06-12T23:36:08.462334Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/ is case insensitive
2020-06-12T23:36:08.462514Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/home/tehccount/Dropbox/DesignInk Digital/Kyle/Development Databases/mysql/' (OS errno: 13 - Permission denied)
2020-06-12T23:36:08.462555Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-06-12T23:36:08.462622Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20-0ubuntu0.20.04.1)  (Ubuntu).

Другие тесты

Перейдите к предполагаемому каталогу данных mysql с помощью cd / home / tehccount / Dropbox / DesignInk \ Digital / Kyle / Development \ Databases / mysql / , затем с помощью команды sudo -u mysql touch testfile. txt успешно создает файл / home / tehccount / Dropbox / DesignInk Digital / Kyle / Development Databases / mysql / testfile.txt

Резюме

Несмотря на все мои усилия и 8-часовой рабочий день, Мне не удалось выяснить, почему процесс / usr / sbin / mysqld не может быть запущен. MySQL должен быть удален из Apparmor, а разрешения datadir установлены магически либеральными 777 разрешениями. Я сделал это успешно, прежде чем использовать Linux Mint с Apparmor и соответствующими разрешениями. Любые предложения приветствуются, и спасибо.

0
задан 13 June 2020 в 02:49

1 ответ

I was getting the same error, I did exactly the same things you did and got the same results.

I was moving the /var/lib/mysql => /media/{user}/data/mysql

My fix:

$ sudo chmod 777 /media/{user}/

My guess is that I could mount the data directory out of the /media/{user}/ and should work fine too

Hint: If AppArmor is blocking you, it will tell you in the output of journalctl -xe.

0
ответ дан 19 June 2020 в 21:25

Другие вопросы по тегам:

Похожие вопросы: