Praca z MySQL w konsoli

Aby zarządzać naszymi bazami opartych na MYSQL możemy wykorzystywać wiele różnych programów klienckich, choćby popularny przeglądarkowy PHPMYADMIN. Oczywiście programy oparte na GUI są łatwiejsze, gdyż jedno kliknięcie generuje odpowiednie zapytanie SQL, np. utworzenie nowej tabeli. Ale w tym wypadku nie będziemy szli na łatwiznę i przedstawię w poniższym wpisie najbardziej użyteczne operacje na standardowym kliencie MySQL działającym w trybie tekstowym pod konsolą.

Logowanie do MySQL

Podstawowa kwestia to oczywiście zalogowanie się do serwera MySQL:

user@local:$ mysql -u NAZWA_UZYTKOWNIKA -p

W parametrze u podajemy nazwę użytkownika, tak jak jest pokazane w przykładzie ( może być bez spacji ), parametr p oznacza, że wymagane będzie podanie hasła. Możemy zaraz po parametrze p podać hasło ( też może użycia bez spacji pomiędzy parametrem a hasłem ).
Jeśli osobiście instalowaliśmy serwer MySQL, to oczywiście w bazie nie mamy żadnego użytkownika, poza super użytkownikiem ( root).

Tworzenie nowego użytkownika

Utworzenie tylko nowego użytkownika bez żadnych praw do baz danych:

user@local:$ CREATE USER 'uzytkownik'@'localhost' IDENTIFIED BY 'haslo'

Utworzenie nowego użytkownika z przydzieleniem mu praw do określonej bazy danych:

user@local:$ GRANT ALL ON `nazwa_bazy.*` TO `uzytkownik` IDENTFIED BY 'haslo';

Parametry:

  • ALL – wszystkie uprawnienia
  • ON – za tym parametrem wpisujemy nazwę bazy danych. Operator (.*) oznacza, że mają być brane pod uwagę wszystkie tabele z bazy danych określonej przed „kropką”
  • TO – za tym parametrem wpisujemy nazwę użytkownika
  • IDENTIFIED BY – za tym poleceniem ustawiamy hasło użytkownika

Jeśli zmiany nie są widoczne to po wykonywanych poleceniach należy przeładować uprawnienia:

user@local:$ FLUSH PRIVILEGES;

Jeśli zamiast `NAZWA_BAZY.*` wpiszemy *.* oznaczać to będzie, że użytkownik będzie miał dostęp do wszystkich baz i ich tabel. Gwiazdka oznacza w tych wyrażeniach „wszystko”.
Możemy również też przypisać prawa konkretnej tabeli, wtedy oczywiście zamiast gwiazdki po kropce określającej nazwę bazy wpisujemy nazwę konkretnej tabeli ( NAZWA_BAZY.NAZWA_TABELI ).

Oczywiście nadawanie użytkownikowi wszystkich praw wykorzystując parametr ALL jest mało rozsądne.
Zamiast tego, należałoby wypisywać uprawnienia w postaci listy poleceń SQL do których dostęp będzie miał nowo używkonik dając mu najbardziej przydatne z punktu widzenia użytkownika polecenia np.:

user@local:$ GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , INDEX , CREATE TEMPORARY TABLES ON `nazwa_bazy.*` TO `uzytkownik` IDENTFIED BY 'haslo';

ZMIANA HASŁA UŻYTKOWNIKA

Ten przykład pokazuje jak zmienić hasło bieżącego (zalogowanego) użytkownika

user@local:$ SET PASSWORD = PASSWORD('nowe_haslo')

Funkcja PASSWORD() poprostu szyfruje nasze hasło, tak wiec zostaje dodane/zaktualizowane już w postaci zaszyfrowanej i tak powinno się robić w tym przypadku !

Dla określonego użytkownika:

user@local:$ SET PASSWORD FOR 'uzytkownik'@'localhost' = PASSWORD('nowe_haslo');

lub:

user@local:$ UPDATE `mysql.user` SET `Password` = PASSWORD('haslo') WHERE `User` = 'uzytkownik';

TWORZENIE NOWEJ BAZY

user@local:$ CREATE DATABASE `nowa_baza`;

UTWORZENIE NOWEJ TABELI

user@localhost:$ CREATE TABLE `nazwa_tabeli` (`nazwa_pola_1` [TYP_DANYCH], `nazwa_pola_2` [TYP_DANYCH]);

Nazwy tworzonych pól wraz z ich typy danych rozdzielamy przecinkami, po ostatnim zadeklarowanym polu oczywiście przecinka już nie wpisujemy tylko zamykamy deklaracje pól nawiasem zamykającym.

Przykład z wieloma polami i ustawieniem głównego klucz dla pole1 i unikalności dla pole2:

 CREATE TABLE `nazwa_tabeli` (
  `pole1` INT NOT NULL auto_incremet,
  `pole2` VARCHAR(64),
  `pole3` FLOAT(3,1),
  `pole4` TEXT NOT NULL,
  `pole5` ENUM('1','2','INNE'),
  PRIMARY KEY (`pole1`),
  UNIQUE (`pole2`)
  )

UŻYTECZNE POLECENIA / KOMENDY MYSQL

  • SHOW DATABASES; – pokazuje wszystkie utworzone bazy danych
  • USE [nazwa_tabeli]; – ustawia aktywną bazę danych, na które aktualnie mamy pracować
  • SHOW TABLES; – pokazuje wszystkie tabele aktualnie wybranej tabeli ( USE )
  • SELECT DATABASE(); – pokazuje nazwę aktualnej bazy na której pracujemy
  • SELECT LAST_INSERT_ID(); – pokazuje numer ostatnio dodanego rekordu ( jeśli ma pole z AUTO_INCREMENT )
  • DESCRIBE `nazwa_tabeli`; – pokazuje strukturę tabeli
  • EXPLAIN `nazwa_tabeli`; – to samo co powyżek
  • SHOW VARIABLES; pokazuje zmienne systemowe MYSQL, np. możemy w łatwy sposób sprawdzić aktualnie kodowanie znaków w MYSQL: SHOW VARIABLES LIKE ‚character_set%';

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


3 × = dwadzieścia jeden

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre user="" computer="" escaped="">