"Impossibile creare il file di prova /var/lib/mysql/user-desktop.lower-test": Come eseguire il server mysql su Xubuntu 13.04 (kubuntu-desktop)

7

Ho scaricato e decompresso MySQL 5.6.12 in /opt/mysql/server-5.6 . Voglio usare questo db invece della versione 5.5 preinstallata. Ma nessuna delle due versioni funziona.

Quando voglio avviare un server con mysqld --console (versione preinstallata) ottengo questo errore:

[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

Non ci sono nessuna di queste directory nel mio sistema:

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

Come può essere? MySQL è preinstallato ma le dirs sono assenti. Dovrei crearli manualmente? O devo fare altro, eseguire qualche programma, per crearli? Quale modalità devo impostare per loro?

C'è qualche programma mysql_install_db nel sistema. Dovrei eseguirlo per configurare MySQL?

    
posta Green 19.07.2013 - 18:31

1 risposta

4

Assicurati di aver installato MySQL come root sudo apt-get install mysql-server . Di solito dovrebbe funzionare.

Per continuare da quello che hai qui. Puoi creare le directory mancanti ma assicurarti che siano di proprietà dell'utente \ gruppo mysql: chown -R mysql:mysql /var/lib/mysql

Se vuoi cambiare la directory dei dati di MySQL, fallo nel file di configurazione di MySQL /etc/mysql/my.cnf

Quindi puoi scegliere tra la configurazione di apparmor per consentire a MySQL di leggere \ execute \ modificare la nuova directory di dati e le sottodirectory o, a tuo rischio e pericolo, puoi rimuovere apparmor . Potrebbe essere necessario essere root per fare quanto segue:

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

Quindi puoi eseguire mysql_install_db .

Ma allora non avrai utenti nel database! Per risolvere questo:

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
    
risposta data Muhammad Gelbana 12.11.2013 - 20:17

Leggi altre domande sui tag