Łączenie się z MySQL w Bash (bez MySQL)

11

Próbuję połączyć się ze zdalną bazą danych MySQL w Bash. Na serwerze obsługującym bazę danych mogę wpisać:

mysql -u _username_ -p

połączyć.

Chciałbym móc pisać:

mysql -h _host_ -u _username_ -p

połączyć się z innego serwera. Nie mam MySQL zainstalowanego na kliencie, więc polecenie nie zostało znalezione. Czy jest coś, co mogę zainstalować (preferowane apt-get) oprócz całego serwera MySQL, aby móc używać poleceń mysql w bash?

użytkownik722307
źródło
1
apt-get install mysql-client Myślałem, że to tylko dla klienta GUI.
user722307,
Możesz odpowiedzieć na własne pytanie i po pewnym czasie możesz je zaakceptować.
enzotib

Odpowiedzi:

21

Aby zainstalować klienta MySQL z linii poleceń, należy:

sudo apt-get install mysql-client

i wtedy możesz zrobić

mysql -h HOST -P PORT_NUMBER -u USERNAME -p

Może jednak zajść potrzeba zmiany konfiguracji serwera MySQL. Domyślnie na Ubuntu serwer MySQL akceptuje tylko połączenia z serwera lokalnego. Ustawienie jest wywoływane bind-addressi ustawiane w /etc/mysql/my.cnf. Domyślnie jest 127.0.0.1- powinieneś zmienić go na adres IP serwera. Jeśli serwer ma wiele adresów IP, możesz wybrać tylko jeden adres IP (powiedzmy dla sieci wewnętrznej) lub pozwolić MySQL nasłuchiwać wszystkich adresów IP, podając wartość0.0.0.0

Musisz także upewnić się, że użytkownik MySQL ma dostęp do bazy danych. Postępując zgodnie z instrukcjami w Internecie, możesz utworzyć użytkownika 'myname'@'localhost'- ten użytkownik nie będzie mógł połączyć się zdalnie. Aby utworzyć nowego użytkownika, który będzie mógł łączyć się z adresu IP klienta, musisz wykonać następujące czynności:

GRANT ALL PRIVILEGES ON database_name TO 'username'@'192.168.0.51' IDENTIFIED BY 'password';

Przeczytaj trochę więcej o specyfikacji adresu, której używa MySQL .

Na koniec nie zapomnij upewnić się, że zapora serwera pozwoli na dostęp do portu MySQL - domyślnie jest to 3306.

Hamish Downer
źródło