MySQL instalacja pod Ubuntu 12.04

Instalacja serwera MySQL pod Ubuntu jest banalna. W pierwszej kolejności warto jest zaktualizować listę pakietów:

root@server: apt-get update

po aktualizacji wystarczy wpisać w linii poleceń poniższą komendę:

root@server: apt-get install mysql-server

Podczas instalacji zostaniemy poproszeni o podanie hasła użytkownika root. Zalecam wpisanie silnego hasła, gdyż ten użytkownik ma pełny dostęp do wszystkich baz danych, które będą ma serwerze.

Po zakończonej instalacji serwer MySQL powinien się uruchomić automatycznie. Możemy to sprawdzić wydają z konsoli polecenie: Czytaj dalej MySQL instalacja pod Ubuntu 12.04

MySQL INSERT i UPDATE na postawie SELECT

W MySQL można w prosty sposób dodać nowe wiersze do jednej tabeli na podstawie danych wybranych z innej tabeli. Poniżej przykład zapytania, które wstawia do tabela1 w pola pole1_t1, pole2_t1, … wybrane wartości z tabela2 uwzględniając zadany warunek:

INSERT INTO `tabela1` (`pole1_t1`,`pole2_t1`,`pole3_t1`,`pole4_t1`,`pole5_t1`) SELECT `pole1_t2`,`pole2_t2`,`pole3_t2`,`pole4_t2`,'dowolna_wartosc' FROM `tabela2` WHERE `pole1_t2`= '2' LIMIT 2;

Nie we wszystkie pola trzeba wstawiać wartości wybrane z innej tabeli. Jak widać w powyższym przykładzie można również zamiast ‚dowolna_wartość’ wpisać własny ciąg znaków.

Oczywiście w zapytaniu możemy wybierać dane z tej samej tabeli, do której wstawiamy nowe rekordy.

Na podobnej zasadzie możemy również aktualizować rekordy:

UPDATE tabela1 t1, (SELECT * FROM tabela2 WHERE id='x') t2 SET t1.pole1 = t2.pole1 where t1.id=t2.id;

Ciekawym rozwiązaniem może być aktualizacja pola wraz ze zwiększeniem jego wartości zależnym od parametrów pobranych na podstawie SELECT’a:

SET @a =0;
UPDATE tb1 SET pole1 = pole1 + ( @a := @a +1 ) WHERE pole2 = 1 AND pole1 > 2 ORDER BY pole1 ASC;

Powyżej wartość pole1 następujących po sobie rekordów według sortowania jest zwiększana o kolejne liczby całkowite.

MySQL resetowanie hasła root’a

Poniżej procedura resetowania hasła root’a do baz ydanych MySQL, któa może być stosowana na platformach Windows i Linux.

1. W pierwszej kolejności należy zatrzymać serwer MySQL:

root@server: service mysql stop

2. Uruchamiamy server mysql z poniższymi opcjami:

root@server: mysqld --skip-grant-tables --skip-networking &

W związku z tym, iż powyższe polecenie daje możliwość połączenia do serwera każdemu bez hasła, ze względów bezpieczeństwa uruchamiamy serwer bez sieci, dzięki czemu połączenie do niego jest możliwe tylko lokalnie.

3. Następnie łączymy się z serwerem:

root@server: mysql -u root

4. Z linii komend mysql wykonujemy poniższe polecenie:

mysql> FLUSH PRIVILEGES;

5. Następnie ustawiamy lub uaktualniamy hasło root’a wpisując zamiast „nowehaslo” swoje hasło do serwera MySQL:

mysql> UPDATE mysql.user SET Password=PASSWORD('nowehaslo') WHERE User='root';
Jeżeli resetujemy hasło dla root’a, który może się logować tylko lokalnie wpisujemy poniższe polecenie zamiast wcześniejszego:
mysql> UPDATE mysql.user SET Password=PASSWORD('nowehaslo') WHERE Host='localhost' AND User='root';
6. Przed uruchomieniem serwera musimy jeszcze załadować do pamięci tabelę uprawnień:
mysql> FLUSH PRIVILEGES;

7. Na zakończenie zatrzymujemy serwer i uruchamiamy do bez dodatkowych opcji poniższymi poleceniami:

root@server: /etc/init.d/mysql stop
root@server: service mysql start
Po tych zabiegach będziemy mogli zalogować się do serwera mysql za pomocą nowego hasła:
root@server: mysql -u root -p