«Невозможно создать тестовый файл /var/lib/mysql/user-desktop.lower-test»: как запустить сервер mysql на Xubuntu 13.04 (kubuntu-desktop)

7

Я загрузил и распаковал MySQL 5.6.12 на /opt/mysql/server-5.6 . Я хочу использовать этот db вместо предварительно установленной версии 5.5. Но ни одна версия не работает.

Когда я хочу запустить сервер с mysqld --console (предварительно установленная версия), я получаю эту ошибку:

[email protected]:~$ sudo mysqld --console
[sudo] password for user:
130719 19:26:17 [Warning] Can't create test file /var/lib/mysql/user-desktop.lower-test
130719 19:26:17 [Warning] Can't create test file /var/lib/mysql/user-desktop.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 2)
130719 19:26:17 [ERROR] Aborting

130719 19:26:17 [Note] mysqld: Shutdown complete

В моей системе нет ни одного из этих устройств:

/var/lib/mysql/
/var/lib/mysql/
/var/lib/mysql/

Как это может быть? MySQL предварительно установлен, но отсутствуют. Должен ли я создавать их вручную? Или мне нужно сделать что-то еще, запустить какую-нибудь программу, чтобы создать их? Какой режим мне нужно установить для них?

В системе существует некоторая mysql_install_db . Должен ли я запускать его для настройки MySQL?

    
задан Green 19.07.2013 в 16:31
источник

1 ответ

4

Убедитесь, что вы установили MySQL как root sudo apt-get install mysql-server . Обычно это должно работать.

Продолжать то, что у вас есть. Вы можете создать недостающие каталоги, но убедитесь, что они принадлежат пользователю \ group mysql: chown -R mysql:mysql /var/lib/mysql

Если вы хотите изменить каталог данных MySQL, сделайте это в файле конфигурации MySQL /etc/mysql/my.cnf

Затем вы можете выбрать между настройкой apparmor , чтобы MySQL мог читать \ выполнять \ изменять новый каталог данных и подкаталоги или, на свой страх и риск, , вы можете удалите apparmor . Возможно, вам понадобится root , чтобы сделать следующее:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot

Затем вы можете запустить mysql_install_db .

Но тогда у вас не будет пользователей в базе данных! Чтобы решить эту проблему:

mysqld --skip-grant-tables --skip-networking & #Start MySQL manually with no authentication checks
mysql # Access MySQL, no username\password needed
use mysql;
DELETE FROM user;
INSERT INTO 'user' ('Host', 'User', 'Password', 'Select_priv', 'Insert_priv', 'Update_priv', 'Delete_priv', 'Create_priv', 'Drop_priv', 'Reload_priv', 'Shutdown_priv', 'Process_priv', 'File_priv', 'Grant_priv', 'References_priv', 'Index_priv', 'Alter_priv', 'Show_db_priv', 'Super_priv', 'Create_tmp_table_priv', 'Lock_tables_priv', 'Execute_priv', 'Repl_slave_priv', 'Repl_client_priv', 'Create_view_priv', 'Show_view_priv', 'Create_routine_priv', 'Alter_routine_priv', 'Create_user_priv', 'ssl_type', 'ssl_cipher', 'x509_issuer', 'x509_subject', 'max_questions', 'max_updates', 'max_connections', 'max_user_connections') VALUES('localhost','root',PASSWORD('root'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0'); #Add root user with passowrd, root
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
exit;
killall mysqld;
start mysql
mysql -u root -p
# Enter password, which is: root
    
ответ дан Muhammad Gelbana 12.11.2013 в 19:17