"Testdatei /var/lib/mysql/user-desktop.lower-test kann nicht erstellt werden": So führen Sie den MySQL-Server unter Xubuntu 13.04 (kubuntu-desktop) aus

7

Ich habe MySQL 5.6.12 heruntergeladen und entpackt /opt/mysql/server-5.6. Ich möchte diese Datenbank anstelle der vorinstallierten 5.5-Version verwenden. Aber keine der Versionen funktioniert.

Wenn ich einen Server mit mysqld --console(vorinstallierte Version) starten möchte, wird folgende Fehlermeldung angezeigt:

user@user-desktop:~$ 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

In meinem System gibt es keine dieser Verzeichnisse:

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

Wie kann es sein? MySQL ist vorinstalliert, aber es fehlen Verzeichnisse. Soll ich sie manuell erstellen? Oder muss ich etwas anderes tun, ein Programm ausführen, um sie zu erstellen? Welchen Modus muss ich für sie einstellen?

Es gibt ein mysql_install_dbProgramm im System. Soll ich es ausführen, um MySQL einzurichten?

Grün
quelle

Antworten:

6

Stellen Sie sicher, dass Sie MySQL als root installiert haben sudo apt-get install mysql-server. Dies sollte normalerweise funktionieren.

Um von dem fortzufahren, was Sie hier haben. Sie können die fehlenden Verzeichnisse erstellen, aber stellen Sie sicher, dass sie dem Benutzer \ group mysql gehören:chown -R mysql:mysql /var/lib/mysql

Wenn Sie das Datenverzeichnis von MySQL ändern möchten, tun Sie dies in der Konfigurationsdatei von MySQL /etc/mysql/my.cnf

Anschließend können Sie zwischen der Konfiguration von Apparmor wählen , damit MySQL das neue Datenverzeichnis und die Unterverzeichnisse lesen \ ausführen \ ändern kann, oder Apparmor auf eigenes Risiko entfernen . Möglicherweise müssen Sie Folgendes tun:root

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

Dann kannst du rennen mysql_install_db.

Aber dann haben Sie keine Benutzer in der Datenbank! Um dies zu lösen:

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
quelle