Ručna instalacija MySQL-a na Windows. Osnove MySQL administracije Korišćenje komandne linije Zaustavljanje mysql servera iz komandne linije




Za Win 32 odaberite distribuciju: Windows (x86, 32-bit), Zip arhiva.

Za Win 64: Windows (x86, 64-bit), Zip arhiva.

Nakon što kliknete na dugme Preuzmi, vidjet ćete obrazac za registraciju, možete ga preskočiti klikom na link ispod - Ne hvala, samo me odvedite do preuzimanja.

2. Kreirajte instalacioni folder. Na primjer . I raspakujte sadržaj arhive u nju tako da fascikle bin, podaci, dokumenti i drugo bili u korijenu instalacionog foldera.

3. Pređimo na kreiranje konfiguracijske datoteke (my.ini). Za osnovu uzimamo jedan od tipičnih fajlova:

  • my-small.ini - pogodan za one koji s vremena na vrijeme koriste MySQL i ne žele da server zauzima puno resursa.
  • my-medium.ini je takođe lagana konfiguracija, ali je pogodna za one koji redovno koriste MySQL (dobar izbor za kućni web server).
  • my-large.ini i my-huge.ini su za sisteme koji se koriste kao namjenski MySQL server. Međutim, my-large.ini se može koristiti za kućni server ako su vam potrebne dodatne MySQL performanse (512 MB RAM-a nije toliko ovih dana).
  • my-innodb-heavy-4G - za namenske servere sa 4 GB RAM-a i koji koriste samo InnoDB tabele.

U ovom primjeru, izabrao sam my-medium.ini kao osnovu. Preimenujte ga u my.ini i stavite ga u korijen instalacionog foldera ( C:\Program Files\MySQL\MySQL Server 5.5).

Otvorite za uređivanje (u običnom Notepadu) i odmah nakon reda dodajte dva parametra:

basedir=C:/Program Files/MySQL/MySQL Server 5.5 datadir=C:/Program Files/MySQL/MySQL Server 5.5/data

Imajte na umu da putanje koriste kose crte naprijed (/), a ne obrnute kose crte (\).

baseir je put do instalacionog foldera.

datadir - put do mape podataka (gdje su pohranjene sve baze podataka). Ponekad ima smisla staviti podatke na zaseban disk kako bi se poboljšale performanse ili osigurala pouzdanost.

Za svaki slučaj, evo fragmenta konfiguracijske datoteke, nakon unošenja izmjena:

# The MySQL server basedir=C:/Program Files/MySQL/MySQL Server 5.5 datadir=C:/Program Files/MySQL/MySQL Server 5.5/data port = 3306 socket = /tmp/mysql.sock skip-buffer-locking key =_ 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K InnoDB_sort_buffer_size = 8

4. Sljedeći korak je dodavanje putanje C:\Program Files\MySQL\MySQL Server 5.5\bin na varijablu okruženja PATH kako bi se olakšalo pokretanje MySQL-a iz komandne linije. Da biste to učinili, otvorite Svojstva sistema -> Napredne postavke sistema -> na kartici Napredno na samom dnu, dugme "Varijable okruženja...". U prozoru koji se otvori, skrolujte kroz sistemske varijable dok ne pronađemo Put. Označite ovaj red i kliknite na "Uredi...". Na kraju reda dodajte svoju putanju, zadržavajući postojeće parametre:

Imajte na umu da su staze odvojene tačkom i zarezom. Obavezno uključite tačku i zarez na početku i na kraju puta.

5. Prije izvođenja probnog rada, otvorite ulazni port TCP 3306 u Windows zaštitnom zidu:


Ako imate opcionalni zaštitni zid instaliran na vašem sistemu, također morate otvoriti TCP port 3306 na tom zaštitnom zidu za dolazne veze.

6. Sada radimo probni rad. U komandnoj liniji koja radi kao administrator (ovo je potrebno ako je UAC omogućen na Seven ili Visti), izvršavamo:

mysqld --konzola

Na ekranu će biti prikazano nekoliko linija. Ako je lansiranje bilo uspješno, onda će posljednji red izgledati otprilike ovako:

Verzija: "5.5.9-log" utičnica: "" port: 3306 MySQL Community Server (GPL)

Ostavite ovaj prozor otvoren i otvorite drugi prozor komandne linije u koji unosimo:

MySQL -u root

Ako je veza bila uspješna, vidjet ćete prompt komandne linije: mysql>

Hajde da vidimo koje baze imamo:

show baze podataka;

Tačka i zarez na kraju SQL upita je OBAVEZNO!

Odgovor tima:


Sada smo konačno uvjereni da server radi.

7. Prelazimo na sljedeći korak, potrebno je postaviti MySQL administratorsku lozinku (root korisnik). Podrazumevano, lozinka nije postavljena i to bi trebalo ispraviti. U istom MySQL prozoru unesite sljedeće naredbe:

Koristite mysql UPDATE korisnika SET lozinka = PASSWORD("vaša_lozinka") WHERE korisnik = "root";

Provjera rezultata:

SELECT korisnika, host, lozinka FROM korisnika;

Kao što možete vidjeti na snimku ekrana, kolona lozinke je popunjena, što znači da je lozinka postavljena.

Prije izlaska pokrenite naredbu:

FLUSH PRIVILEGES;

Sada, prilikom povezivanja, morate unijeti lozinku. Da biste to učinili, koristite prekidač -p:

MySQL -u korijen -p

Da isključite MySQL pokrenite:

mysqladmin -u root -p isključivanje

8. Poslednji korak je da pokrenete MySQL kao Windows sistemski servis.

Uvjerite se da nema aktivnih MySQL procesa na sistemu.

Na komandnoj liniji pokrenite kao administrator, pokrenite:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --install

Put do mysqld mora biti specificiran u potpunosti (čak i ako je u PATH)!

Da biste pokrenuli uslugu, otvorite "Computer Management" i ručno pokrenite MySQL uslugu:


Ili lakše preko komandne linije:

net start mysql

Da biste uklonili uslugu, prvo je zaustavite:

net stop mysql

i izvrši:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --ukloni

Prijatelji mi često postavljaju određena pitanja o administraciji, pa sam pomislio, zašto ne bih napisao takve članke-napomene na sajtu umesto da objašnjavam istu stvar 100 puta? Osim toga, ovo je odlična prilika, u tom slučaju, da i sami iskoristite takvu bilješku, jer i sami znate da ponekad nije moguće sve držati u glavi i na ovaj ili onaj način ponekad se morate obratiti priručniku, pa neka jedna od sekcija ove stranice postane takva knjiga. Danas ćemo pričati o tome kako raditi sa MySQL DBMS iz komandne linije, da, neko će reći - „Nakoy? Na kraju krajeva, postoji phpMyAdmin, ”Odgovaram - zašto trošiti dragocjene resurse servera instaliranjem svih vrsta smeća kao što su WebMin, phpMyAdmin, itd., ako se sve može lako uraditi uz pouzdane, provjerene alate. Postavljanje sa terminala preko SSH tunela je naš izbor!

Pa, hajde da počnemo. Na server se povezujemo preko SSH-a, na primjer, preko dobro poznatog PuTTY-a (Free Telnet / SSH Client). Sada idemo direktno na opis komandi.

Prijavite se na MySQL server sa mysql programom:

mysql -u korijen -h lokalni host -p

Opcija -u specificira korisnika koji će se prijaviti. Opcija -h specificira host. Ovo je obično localhost ako postavljate server koji nije udaljen. Konačno, -p govori mysql klijentskom programu da unese lozinku za pristup bazi podataka. Obratite pažnju na mysql> prompt. Ovdje ćete unijeti sve svoje komande. Sada, budući da smo u mysql okruženju kao root korisnik, možemo početi sa postavljanjem baze podataka.

Ulogovani smo i mysql prompt je na ekranu. Prvo, pogledajmo listu postojećih baza podataka. Da biste to učinili, unesite naredbu SHOW DATABASES.

U odgovoru je jasno da je naredba završena bez ikakvih grešaka. U ovom slučaju, jedna linija je promijenjena. Ovo se odnosi na glavnu mysql bazu podataka koja sadrži listu svih baza podataka. Ali ne morate previše brinuti o manjim detaljima. Posljednji broj označava vrijeme izvršenja upita. Možemo potvrditi da je baza podataka kreirana ponovnim pokretanjem naredbe SHOW DATABASES.

Da bismo započeli kreiranje tabela u novoj test bazi podataka, moramo je postaviti kao trenutnu. Da biste to učinili, koristite naredbu USE. Parametar ove naredbe specificira ime baze podataka koju treba učiniti aktuelnom. Također možete postaviti trenutnu bazu podataka na komandnoj liniji tako što ćete navesti njeno ime iza parametra -D. Idemo dalje i prebacimo se na testnu bazu podataka.
Prebacivanje baze podataka:

USE test;

Privilegije u MySQL

Dajte privilegije po komandi GRANT.
Privilegije definišu kako korisnici mogu pristupiti bazama podataka, tabelama... skoro svemu. Trenutno, samo MySQL root superkorisnik može pristupiti test bazi podataka, s obzirom na date dozvole. Kreirajmo drugog korisnika, na primjer, administratora (administratora), koji će pristupiti testnoj bazi podataka i raditi sa informacijama iz nje. Ali prije nego što počnemo, pogledajmo malo pojednostavljeni format naredbe GRANT.

Bilješka: Komanda GRANT se smatra načinom za kreiranje korisnika. Međutim, kasnije verzije MySQL-a takođe sadrže funkciju CREATE_USER, iako je GRANT i dalje poželjan.
Sada su nam potrebne privilegije koje se mogu dodijeliti. Koristeći sve gore navedeno, možete postaviti sljedeće privilegije:

Bilješka: Ako koristite MySQL za komunikaciju sa web aplikacijom, tada su ovdje objašnjene privilegije CREATE, SELECT, INSERT, kao i privilegije DELETE i UPDATE (opisane u MySQL priručniku, odjeljak GRANT i REVOKE sintaksa) su jedine koje vjerovatno će biti potrebni. Mnogi ljudi griješe dajući sve privilegije kada im to zaista nije potrebno. Provjerite s programerima aplikacija da li će takva dopuštenja zaista stvoriti probleme s performansama.

Kreirajte administratorskog korisnika:

Tako su korisnici stvoreni; sada da ih testiramo. Prvo izađite iz mysql-a tako što ćete u prompt ukucati quit:

Opcije su objašnjene u odjeljku naredbe GRANT. A sada ćemo korisniku uskratiti bilo kakav pristup. Recimo da smo shvatili da administratorski nalog uzrokuje sigurnosne probleme. Odlučujemo da ukinemo sva prava. Idemo kao root i radimo potrebno.
Opozovite dozvole za administratorskog korisnika:

REVOKE ALL ON test.* IZ "admin" @"localhost" ;

Bilješka: U ovom slučaju pristup korisnika je jednostavan, tako da oduzimanje prava na jednu bazu podataka nije problem. Ali obično ćete najvjerovatnije morati koristiti *.* umjesto test.* da biste opozvali pristup korisnika svim drugim bazama podataka.

Sada pogledajmo kako potpuno izbrisati nalog pomoću naredbe DELETE i pogledajmo MySQL korisničku tabelu.

Brisanje naloga naredbom IZBRIŠI.
MySQL korisnička tabela je lista korisnika i informacija o njima. Provjerite jeste li prijavljeni kao root. Koristite glavnu MySQL bazu podataka.

Korištenje glavne mysql baze podataka:

Korisnička tabela je ona koja vam je potrebna. Ima 30 različitih polja i teško se čita. Radi lakšeg čitanja koristimo treći oblik naredbe SELECT. Obavezna polja su Host (host) i Korisnik (korisnik).
Pronalaženje administratorskog korisnika u korisničkoj tabeli:

Sada kada imamo informacije, možemo se riješiti administratorskog korisnika. Ovo se radi naredbom DELETE; evo njegove sintakse:

Možda ste primijetili da je format DELETE donekle sličan formatu SELECT. Navedite korisničko polje i admin vrijednost. Ovo će ukloniti unos iz tabele korisnika u kojoj je korisnik admin, brišući naš nalog. Uradimo ovo:
Uklanjanje administratorskog korisnika:

Komanda FLUSH PRIVILEGES je potrebna za ažuriranje dozvola.

To je sve za danas. Slažem se, sve je jednostavno! ;)

Dobar dan, kolege 🙂

Da, upravo kolege, jer MySQL komandna linija (ili MySQL Shell, kako je programeri vole da zovu), kao i rad sa MySQL-om u konzoli, malo je verovatno da će biti od koristi običnom smrtniku.

Da bi ova tema bila zanimljiva, morate biti barem početnik sistem administrator koji u principu ne koristi phpMyAdmin i druga sučelja.

Lično, ja više volim da koristim phpMyAdmin kao glavni za rad sa MySQL, jer. Ja sam po prirodi vizuelna osoba. Međutim, ponekad u praksi postoje situacije kada su poznavanje MySQL komandne linije i sposobnost rada sa MySQL u konzoli servera jednostavno neophodni.

Trenutno ih imam tri:

  1. Prvi put sam se susreo sa radom u MySQL konzoli kada je trebalo da uvezem veliki dump baze podataka. Preko phpMyAdmin-a nije učitano u potpunosti, jer. pao je negdje na sredini u smislu vremenskog ograničenja, uprkos promjeni postavki za vrijeme izvršenja operacije i veličinu preuzetih datoteka. U principu je bilo moguće odabrati željene vrijednosti, ali mi se činilo da je to predug proces.
  2. Sljedeći put kada sam morao raditi s MySQL-om kroz komandnu liniju bio je da onemogućim provjeru stranih ključeva kada je bilo potrebno izbrisati podatke iz tablice koja je bila povezana s drugim pomoću ključeva. U phpMyAdminu jednostavno nisam pronašao kako to da uradim.
  3. U ozbiljnim kompanijama samo se konzola koristi za rad sa MySQL-om bez ikakvih phpMyAdmins-a. Ne znam konkretno zašto, ali upućeni su rekli da to ima veze sa sigurnošću. Kao rezultat toga, svi su morali da rade sa MySQL komandnom linijom, uključujući i mene 🙂

Ali, opet, rad sa MySQL-om u konzoli i komandnoj liniji je sasvim prikladan za svakodnevnu upotrebu. Svi poznati vizuelni programi za rad sa bazom podataka i dalje rade na osnovu naredbi MySQL konzole. Stoga, ko voli 🙂

Pokretanje konzole na drugom OS-u

Pošto ću demonstrirati MySQL komandnu liniju u konzoli servera, bilo bi dobro da je prvo pokrenete.

Radnja je jednostavna, mnogima poznata, za koju je dovoljno poznavanje "vrućih tipki".

Pokretanje konzole na Windows-u:

  • Win+R za otvaranje Windows komandne linije sa administratorskim pravima;
  • Unosimo komandu cmd
  • Kliknite Enter na tastaturi

Pokretanje konzole u Linux distribucijama (terminal): u Ubuntu-u sa kojim sam radio, kombinacija sistemskih tastera je dovoljna Ctrl+Alt+T. Ne mogu ništa reći o drugim operativnim sistemima baziranim na Linuxu.

Pokretanje konzole u MacOS-u: Ja to nisam uradio, jer. Još nemam Mac i malo je vjerovatno da će mi biti nepotreban, ali koliko sam uspio saznati, u ovom OS-u nema „vrućih tipki“ za pozivanje terminala. Dakle, ako ste korisnik "apple" proizvoda, onda pokrenite konzolu preko OS sučelja, srećom, na mreži postoji puno priručnika.

Pomalo je neugodno čak i objaviti takve informacije u slučaju da neki profesionalni administrator sistema s bradatim iskustvom slučajno naiđe na ovaj članak. pomisliće: „Autor svoje čitaoce smatra programerima, ali u isto vreme uči kako da pokreću konzolu... Neki ludi :-)“.

Da, sasvim je logično 🙂 Ali samo uzimam u obzir situacije do kojih uz profesionalne programere mogu doći i početnici. Stoga se trudim da informacije budu potpune i dostupne svim kategorijama korisnika, kao što sam već naveo.

Osnovne naredbe MySQL konzole

Dakle, prije svega, moramo pristupiti MySQL komandnoj liniji u konzoli. Da biste to uradili, otvorite konzolu servera i, ako imate MySQL instaliran globalno kao servis, onda za "provjeru veze" pišemo sljedeće:

MySQL -V

Konzola komanda mysql omogućava nam da pokrenemo uslužni program istog imena, a to je MySQL komandna linija.

Ovo će nam omogućiti da saznamo koja je verzija MySQL-a instalirana na računaru i da se uverimo da je uopšte instaliran kao servis. Ako je tako, tada ćete u odgovoru na konzoli vidjeti nešto poput sljedećeg teksta: .

Da, nisam "zaista koder", jer sjedim pod Windowsom 🙂 Ali nije to poenta. Na Unix sistemima, procedura je ista.

Ako odjednom MySQL nije instaliran globalno na vašem računaru ili morate da radite sa nekoliko verzija MySQL-a, u kojima postoje samo direktorijumi sa MySQL fajlovima i bibliotekama, tada će pokretanje MySQL-a preko konzole izgledati ovako.

U konzoli idite na direktorij u kojem se nalazi izvršna datoteka MySQL (barem na Windowsu to je mysql.exe) sa sljedećom naredbom:

CD C:\OpenServer\modules\database\MySQL-5.7-x64\bin

Put do distributivnog kompleta, naravno, može se razlikovati za vas. Kao primjer, odlučio sam pokrenuti jednu od MySQL verzija uključenih u OpenServer.

I pokrećemo MySQL, provjeravajući njegovu verziju usput:

Mysql.exe -V

Kao rezultat toga, na konzoli je trebala biti prikazana poruka slična onoj u prvom slučaju mysql Ver 14.14 Distrib 5.7.16, za Win64 (x86_64).

Sve, pokretanjem MySQL komandne linije kroz serversku konzolu, shvatili smo, sada ćemo se direktno povezati na MySQL server.

Povezivanje na MySQL server u konzoli

MySQL server ne mora nužno biti na istoj mašini na kojoj pokušavate da mu pristupite sa konzole. Stoga, kako bi se omogućilo povezivanje na udaljeni MySQL server preko konzole, uslužni program mysql ima mnogo parametara pomoću kojih možete odrediti potrebna podešavanja.

Da bismo pokrenuli MySQL komandnu liniju u konzoli, samo trebamo napisati sljedeće u konzolu servera:

Međutim, u ovom slučaju dobit ćete sljedeću grešku: GREŠKA 1045 (28000): Pristup odbijen za korisnika 'ODBC'@'localhost' (koristeći lozinku: NE). Ovako izgleda poruka o grešci na mom Windows-u. Ako koristite Linux, tada će umjesto ODBC-a biti ime korisnika vašeg sistema, pod kojim izvodite radnje u sistemu.

Sve je to zato što po defaultu, kada se povezuje na MySQL server, konzola koristi ODBC korisnika na Windows-u bez lozinke i sistemskog korisnika na Linux-u sa vlastitom lozinkom. Zadani host je localhost, tj. ovaj korisnik se može povezati samo s lokalnog stroja.

Stoga imate dvije opcije: ili koristiti drugog korisnika za ulazak u MySQL komandnu liniju ili kreirati MySQL korisnika sa željenim nalogom. Ali za drugu metodu, još uvijek ne možemo bez prve 🙂 Stoga se prvo povezujemo s MySQL serverom pod standardnim korisnikom root, koji se kreira kada je MySQL instaliran na računaru i za koji je pristup sa localhost-a po defaultu dozvoljen:

MySQL -u korijen -p

Kada se od vas zatraži da unesete lozinku, jednostavno pritisnite Enter (ako je niste unijeli, naravno, prilikom instaliranja MySQL-a). Nakon toga ćete biti povezani na MySQL server, dodijelit ćete ID veze i dobiti pristup MySQL komandnoj liniji.

Ako želite da se povežete na MySQL server koji ima određeno ime hosta ili IP, ili želite da se prijavite kao drugi korisnik, koristite naredbu u sledećem formatu:

Mysql -u korisničko ime -p korisnička lozinka -h MySQL_server_host_ili_IP

Umjesto ćiriličkih znakova sa podvlačenjem, naravno, trebate unijeti svoje podatke latinicom. Usput, ako želite, ovu naredbu možete napisati u malo drugačijem formatu:

Mysql --user=user_name --password=user_password --host=MySQL_server_host_or_IP

Ako iz nekog razloga ne želite da se vaša lozinka za MySQL konekciju prikazuje na konzoli (što je zapravo tačno), možete koristiti sljedeću naredbu:

Mysql -u korisničko ime -h MySQL_server_host_ili_IP -p

Pošto lozinka nije eksplicitno navedena, od vas će se tražiti da je unesete u sljedećem koraku. Štaviše, znakovi koje ste unijeli neće biti prikazani čak ni u obliku zvjezdica (wildcards), već će to biti samo prazan niz.

Pored navedenih postavki veze, moguće je koristiti sljedeće parametre, čije će vrijednosti biti navedene na isti način kao i gore navedene:

  1. --port ili -P - da navedete port za povezivanje sa MySQL serverom;
  2. --protocol — protokol koji se koristi za povezivanje (moguće opcije: TCP za Windows i Linux, SOCKET za Linux, PIPE i MEMORY za Windows);
  3. --socket ili -S - ovaj parametar je koristan ako želite da se povežete preko utičnica, stoga će vrednost parametra biti socket;
  4. -pipe ili -W - parametar je potreban ako želite koristiti imenovane "pipelines" ili "pipes" za povezivanje;
  5. --shared-memory-base-name - ovaj parametar je koristan za MEMORY konekcije preko zajedničke memorije na Windows-u;

Jasno je da lista svih parametara povezivanja MySQL servera nije ograničena na ovo. U stvarnosti ih ima mnogo više.

Ako vam iz nekog razloga standardna opcija sa navođenjem hosta, korisnika i lozinke ne odgovara, tada će vam sljedeće informacije biti korisne da saznate potpunu listu parametara veze - https://dev.mysql.com/doc /refman/5.7/en/ connecting.html

Kako kreirati bazu podataka u MySQL konzoli

Kada se povežemo sa MySQL serverom i pokrenemo MySQL komandnu liniju, vreme je da započnemo životni ciklus baze podataka naše lokacije, koji počinje njenim kreiranjem. Da kreirate MySQL bazu podataka putem komandne linije, unesite sljedeću naredbu:

CREATE DATABASE ime_baze;

Ista radnja se može uraditi pomoću posebnog MySQL uslužnog programa mysqladmin. Radi izolovano od MySQL komandne linije, tj. da biste ga koristili, morat ćete izaći iz njega ili otvoriti novu serversku konzolu.

A zatim pozovite sljedeću naredbu:

mysqladmin kreiranje baze_name;

Inače, pomoću uslužnog programa mysqladmin, ne samo da možete kreirati i brisati baze podataka bez ulaska u MySQL konzolu, već i upravljati konfiguracijom servera, MySQL procesima, upravljati replikacijama, ping serverima i raditi puno drugih zanimljivih stvari.

Kako kreirati MySQL korisnika na komandnoj liniji

Ne često, ali ponekad je potrebno kreirati novog MySQL korisnika. I to u konzolnom modu.

Na komandnoj liniji MySQL to se radi na sljedeći način:

CREATE USER "username"@"host_or_machine_ip" IDENTIFIKOVANO OD "user_password";

Korisnik je kreiran. Parametar host_or_IP_machine znači da prilikom kreiranja korisnika treba navesti IP sa kojeg se može povezati na server, odnosno ime hosta (prikladno je ime domene radne mašine na mreži).

Usput, kada specificirate host za povezivanje na MySQL server, možete koristiti simbol postotka - % , što znači da se korisnik koji se kreira može povezati na MySQL server sa bilo koje IP adrese ili hosta.

Treba uzeti u obzir da u ovom slučaju localhost nije uključen u listu adresa navedenih pomoću %, jer localhost označava UNIX socket vezu umjesto standardnog TCP/IP. One. ako se kreirani MySQL korisnik poveže sa serverom ne koristeći utičnice, već koristeći drugačiji protokol naveden prilikom povezivanja na MySQL server u konzoli, tada će morati da kreira dva korisnička naloga:

CREATE USER "username"@"%" IDENTIFIKOVANO OD "password"; CREATE USER "username"@"localhost" IDENTIFICIRANO "password";

Shvatili smo kako da kreiramo MySQL korisnika u konzoli. Sada podesimo korisnička prava da izvrši bilo koju radnju s našom novokreiranom bazom podataka sa sljedećom naredbom:

DODAJTE SVE PRIVILEGIJE NA ime_baze.* U "korisničko ime"@"host_or_machine_ip";

Opcija SVE, kao što razumete, samo označava da je korisniku dozvoljeno da izvodi bilo kakve radnje sa određenom bazom podataka. Potpuna lista prava koja se mogu dodijeliti korisnicima pomoću naredbe GRANT, možete pronaći ovdje (iako je opis parametara na engleskom) - https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-privileges

Usput, možete koristiti nekoliko parametara privilegija tako što ćete ih navesti prilikom pozivanja naredbe, odvojenih zarezima.

Ako želite da kreirate superkorisnika, tj. imaju globalne privilegije za izvođenje različitih radnji sa svim bazama podataka na serveru, a zatim upotrijebite sljedeću naredbu:

GRANT ALL ON *.* TO "username"@"host_or_machine_IP";

Usput, neće biti suvišno očistiti keš MySQL servera nakon postavljanja privilegija. Ako ih promijenite, ne zaboravite to učiniti tako što ćete pozvati sljedeću naredbu:

FLUSH PRIVILEGES;

A ako želite promijeniti korisničke dozvole, prvo upotrijebite sljedeću naredbu za resetiranje svih dozvola:

OPOZIVATI SVE PRIVILEGIJE NA *.* IZ "korisničko ime"@"host_or_machine_IP";

A zatim ga instalirajte sa GRANT, kao što je ranije opisano.

Ako u budućnosti trebate promijeniti korisničku lozinku za MySQL, samo pokrenite sljedeće naredbe u MySQL Shell-u:

SET PASSWORD FOR "username"@"host_or_machine_IP" = PASSWORD("new_password"); FLUSH PRIVILEGES;

Resetiranje keša privilegija MySQL servera je potrebno za istu svrhu kao i kod promjene prava - bez ove radnje, promjena MySQL korisničke lozinke se možda neće računati, pa nemojte biti lijeni da je koristite 🙂

Inače, Internet je pun primjera korištenja sljedeće naredbe za resetiranje korisničke MySQL lozinke:

UPDATE mysql.user SET Password=PASSWORD("password") WHERE User="korisničko ime";

Ali ova opcija mi nije radila na MySQL 5.7, dajući grešku GREŠKA 1054 (42S22): Nepoznata kolona 'Lozinka' u 'listi polja'. Njegov uzrok je odsustvo polja Password u tabeli mysql.user.

Iz čega možemo pretpostaviti da ova opcija radi samo za starije verzije MySQL-a, gdje je ovo polje postojalo u korisničkoj tabeli. Stoga, da budete sigurni, koristite moju prvu opciju, osim ako, naravno, niste prisiljeni raditi s pretpotopnim softverom bez mogućnosti ažuriranja verzija :)

Ovim je završeno kreiranje novog MySQL korisnika i pregled akcija sa njegovim pravima i lozinkama. Idemo dalje.

Odabir baze podataka pri radu sa MySQL-om preko komandne linije

Sada, nakon što kreiramo korisnika u MySQL Shell-u i dodijelimo mu prava za rad sa bazom podataka, trebamo odabrati baš ovu bazu podataka kako bismo mogli raditi sa samom bazom podataka i podacima koji su u njoj pohranjeni.

Da biste to učinili, koristite sljedeću naredbu u MySQL konzoli:

USE database_name;

Ako je sve prošlo kako treba, na konzoli će se prikazati poruka baza podataka promijenjena, što će signalizirati da smo se preko konzole prijavili u MySQL bazu podataka. Usput, kada se povezujete na MySQL server, u početku možete odrediti bazu podataka s kojom ćete morati raditi. Da biste to učinili, unesite sljedeću naredbu u konzolu servera:

Mysql --user=user_name --password=user_password --host=MySQL_server_host_or_IP --database=database_name

Ili isto, samo tražeći MySQL korisničku lozinku:

mysql -u korisničko ime -h host_or_ip_mysql_server_database_name -p

To je sve. Mislim da sada nećete imati poteškoća sa povezivanjem na MySQL bazu podataka preko konzole 🙂

Rad sa MySQL tabelama preko MySQL konzole

Dakle, kreirali smo MySQL bazu podataka preko konzole. Sada bi bilo lijepo naučiti raditi s njim za slučaj kada će MySQL komandna linija biti jedino sredstvo za pristup podacima pohranjenim na serveru (kao što je to bilo kod mene, o čemu sam govorio na početku članka ).

Kao što znate, sastoji se od tabela, unutar kojih su informacije već pohranjene u obliku zapisa s nekoliko polja. Stoga, prateći hijerarhiju postavljanja informacija, prvo ćemo naučiti kako izvoditi tipične CRUD operacije sa tabelama.

CRUD operacije, ako neko nije upoznat, su operacije za kreiranje, čitanje, ažuriranje i brisanje podataka sa engleskog. "Kreiraj, čitaj, ažuriraj, izbriši" (ovo će vam možda trebati na intervjuima).

Podsjećam vas da se za izvršavanje radnji s tabelama prvo morate povezati na MySQL bazu podataka pomoću naredbe KORISTI.

Dakle, prva na našem dnevnom redu je naredba za kreiranje MySQL tabele u bazi podataka preko komandne linije, koja izgleda ovako:

CREATE TABLE table_name (name_field_1 field_type_1, field_name_2 field_type_2(field_size_2), INDEX(field_name_1), ...);

Kao što razumijete, polja može biti koliko god želite, njihovi tipovi mogu biti različiti, kao i prisustvo indeksa i ključeva nije obavezno.

Usput, ako želite da kopirate tabelu u drugu bazu podataka ili samo kreirate kopiju u trenutnoj, sledeće naredbe će vam pomoći:

CREATE TABLE new_table_name LIKE old_table_name; INSERT new_table_name SELECT * FROM old_table_name;

Ove komande vam omogućavaju da kopirate strukturu tabele i njene podatke zajedno sa indeksima i okidačima tabele. Ako su vam potrebni samo podaci i struktura (nazivi polja i njihovi tipovi podataka), onda možete proći s jednim pozivom naredbe:

CREATE TABLE new_table_name KAO SELECT * FROM old_table_name;

Sljedeća operacija iz CRUD bloka je čitanje. U slučaju tabela, čitanje će prikazati njihovu strukturu. Za ovo postoje četiri komande:

PRIKAŽI PUNE COLUMNS IZ table_name; DESCRIBE table_name; EXPLAIN ime_tablice; SHOW CREATE TABLE ime_tablice;

Prvi šalje informacije o poljima tabele baze podataka u tabelarnom obliku na MySQL konzolu, ukazujući na ime polja, tip podataka, prisustvo ključeva, podrazumevanu vrednost itd. Kada koristite ključnu riječ PUN možete dobiti proširene informacije, uključujući privilegije za svako od polja za trenutnog korisnika, komentare za svako od njih i vrijednost kodiranja.

Druga i treća naredba su jednostavno skraćeni oblici prve naredbe bez proširenih informacija. Zašto ih je bilo potrebno proizvoditi - ne mogu ni da zamislim... Da li je moguće da se na intervjuima imalo šta pitati prilikom prijavljivanja za posao? 🙂

Četvrta naredba, pored imena, tipova polja i njihovih zadanih vrijednosti, omogućava vam da dobijete vrijednosti ključeva tablice, mehanizama tablice (InnoDB, MyISAM), kodiranja itd.

Operacija ažuriranja u slučaju tabela je promjena njihove strukture, tj. razne akcije sa poljima MySQL tabele:

ALTER TABLE table_name DROP COLUMN field_name; ALTER TABLE ime_tablice ADD COLUMN ime_polja VARCHAR(20); ALTER TABLE table_name CHANGE old_field_name new_field_name VARCHAR(50); ALTER TABLE table_name MODIFY field_name VARCHAR(3);

Prva komanda vam omogućava da izbrišete određeno polje tabele, druga - da dodate, treća vam omogućava da preimenujete polje i istovremeno promenite tip podataka koji su u njemu pohranjeni, a četvrta - promenite samo tip podataka.

Isto se može učiniti s indeksima tablica koristeći gotovo iste komande:

ALTER TABLE table_name DODAJ UNIQUE INDEX index_name (field_name_1, ...); ALTER TABLE ime_tablice preimenuj INDEX old_index_name TO new_index_name; ALTER TABLE table_name DROP INDEX index_name;

Gore navedene komande vam omogućavaju da dodajete, preimenujete i uklanjate indekse iz MySQL tabela putem komandne linije. Za dodavanje i uklanjanje indeksa, postoji, inače, još jedna alternativna opcija za korištenje nezavisnih naredbi, a ne preko ALTER TABLE. Stoga, ako želite, možete ih koristiti:

CREATE UNIQUE INDEX index_name (field_name_1, ...) NA table_name; DROP INDEX index_name ON table_name;

Gore navedene naredbe su ekvivalentne prvoj i posljednjoj iz prethodnog bloka. Nažalost, ne postoji posebna komanda za preimenovanje indeksa. A za promjenu tipa indeksa, nažalost, u MySQL-u uopće nema mogućnosti. Jedini izlaz je da izbrišete indeks i ponovo ga kreirate sa željenim tipom.

Pa, konačno, stigli smo do posljednje operacije iz CRUD bloka - brisanja. Uklanjanje MySQL tabela iz baze podataka je vrlo jednostavno. Dovoljno je izvršiti sljedeću naredbu u MySQL konzoli:

DROP TABLE ime_tablice;

Ponekad u praksi postoje situacije zbog kojih nije moguće izbrisati tabelu ili promijeniti njenu strukturu. Po pravilu, to je zbog upotrebe stranih ključeva u bazi podataka za međusobno povezivanje tabela. Lično sam se više puta susreo sa ovom situacijom, o čemu sam govorio na početku članka.

Stoga, ako je prilikom brisanja ili ažuriranja strukture tabele ili njenih podataka MySQL vratio grešku sa tekstom Ne može se izbrisati ili ažurirati roditeljski red: ograničenje stranog ključa ne uspijeva, tada će vam sljedeće informacije dobro doći.

Da bismo realizirali naše planove, potrebno je privremeno onemogućiti provjeru postojanja stranih ključeva, izvršiti potrebnu operaciju, a zatim ponovo uključiti provjeru, jer zaista je potreban i omogućava vam da se zaštitite od kršenja integriteta podataka u većini slučajeva.

U stvari, za tu svrhu su potrebni MySQL strani ključevi.

Dakle, da biste izbrisali podatke koje ometaju strani ključevi, morate izvršiti sljedeće korake u MySQL konzoli:

SET FOREIGN_KEY_CHECKS=0; #required_mysql_command SET FOREIGN_KEY_CHECKS=1;

Usput, ako želite da obrišete strani ključ, postupak je isti kao kada izbrišete indeks:

ALTER TABLE table_name DROP FOREIGN KEY external_key_name;

Da biste saznali ime MySQL stranog ključa za tablicu, koristite sada već poznatu MySQL konzolnu komandu PRIKAŽI CREATE TABLE.

Rad sa podacima MySQL tablice preko komandne linije

Za tabele smo razmotrili CRUD operacije u MySQL konzoli. Za potpunu sliku, ovoj cheat sheet nedostaju samo komande za rad sa samim podacima pohranjenim u tabelama baze podataka. Mislim da mnogi znaju ove komande i koriste ih u praksi, ali ipak ću ih ponovo podsjetiti.

CRUD operacije za rad sa podacima MySQL tabele će izgledati ovako:

INSERT INTO table_name (field1, field2, ...) VRIJEDNOSTI (field_1 value, field_2 value, ...); SELECT field1, field2, ... FROM table_name; UPDATE table_name SET polje1 = vrijednost_1 polja, polje2 = vrijednost_2 polja; DELETE FROM table_name WHERE polje1 = vrijednost polja_1;

Gore navedene naredbe odgovaraju operacijama kreiranja, čitanja, ažuriranja i brisanja podataka iz MySQL tablica baze podataka. Kada koristite SELECT i UPDATE, također je moguće koristiti kvalifikacionu klauzulu WHERE, koja se može koristiti za specificiranje odabira podataka na način opisan u slučaju korištenja DELETE.

Također, kada dohvaćate podatke iz baze podataka pomoću SELECT, možete koristiti sljedeću opciju da dobijete vrijednosti svih polja tabele:

SELECT * FROM ime_tablice;

Naravno, u ovim operacijama mogu se koristiti i drugi operatori osim WHERE. Naročito ih ima mnogo pri odabiru podataka pomoću SELECT: postoji UNION za kombiniranje rezultata nekoliko upita i različite vrste JOIN. Ceo spisak je veoma dugačak i zamoran i za mene i ovo ćete pročitati.

Stoga, da se složimo: ako želite saznati više o nečemu, samo napišite o tome u komentarima, a ja ću pokušati da vam odgovorim. Ili će to učiniti drugi upućeni članovi naše zajednice. UREDU? 😉

Dakle, za sada se nećemo zadržavati na ovom bloku.

Ako trebate ukloniti sve podatke iz tabele, možete koristiti sljedeću MySQL naredbu:

TRUNCATE ime_tablice;

Prije nego što ga pozovete, kao što je već spomenuto, možda ćete morati onemogućiti provjeru stranog ključa u slučaju da postoje povezane MySQL tabele, što može spriječiti izvođenje potrebne radnje.

Još jedna zanimljiva stvar koju treba uzeti u obzir je da ova naredba ne resetuje brojač AUTO_INCREMENT, za koji se zna da se koristi za automatsko generiranje vrijednosti polja bez potrebe za ručno postavljanjem.

Polja ovog tipa najčešće se koriste za generiranje vrijednosti za ID glavnog ključnog polja, koje se koristi za uspostavljanje veza između podataka iz različitih tabela.

To jest, ako prije brisanja podataka tablice koristite TRUNCATE maksimalna vrijednost brojača je bila 1200, tada će prvi zapis nakon ove procedure imati vrijednost identifikatora 1201. U principu, sve je u redu. Ako postavite dovoljnu veličinu za ovo polje, nećete se uskoro suočiti s prekomjernim vrijednostima.

Međutim, u nekim slučajevima, kada postoji neka vrsta vezivanja za vrijednost polja u kodu aplikacije, ovo ponašanje može biti nezgodno.

Da biste to izbjegli, koristite ovu opciju umjesto gornje naredbe:

TRUNCATE TABLE someTable RESTART IDENTITY;

Ova opcija poziva naredbu TRUNCATEće vam omogućiti da resetujete vrijednost brojača polja iz AUTO_INCREMENT. Stoga će vrijednost polja prvog zapisa dodanog nakon ovog brisanja biti 1 umjesto 1201, kao u primjeru iznad.

Kako izbrisati MySQL bazu podataka putem komandne linije

Životni ciklus rada sa bazom podataka se bliži kraju i završava sasvim logično – brisanjem. Da biste izvršili ovu operaciju u MySQL konzoli, potrebno je izvršiti sljedeću naredbu (u ovom slučaju baza podataka koju treba izbrisati možda neće biti odabrana naredbom KORISTI):

DELETE DATABASE ime_baze;

Ista radnja se može učiniti pomoću MySQL uslužnog programa mysqladmin, koji sam već spomenuo na početku članka prilikom kreiranja baze podataka:

mysqladmin ispusti database_name;

Kada se naredba pozove, na konzoli servera će se pojaviti sljedeća poruka:

Ispuštanje baze podataka je potencijalno vrlo loša stvar.
Svi podaci pohranjeni u bazi podataka bit će uništeni.

Da li zaista želite da ispustite bazu podataka 'database_name'

Ukratko, ovo je upozorenje da je brisanje MySQL baze podataka vrlo loša ideja. Također traži potvrdu akcije. Ako se slažete, pišite y i pritisnite Enter na tastaturi, nakon čega će se na ekranu prikazati sljedeća poruka (ako je sve prošlo kako treba, naravno):

Baza podataka "database_name" je ispuštena

Ovako 🙂

Kako izbrisati MySQL korisnika u konzoli

Sada će ista sudbina zadesiti korisnika MySQL kojeg kreiramo da vam pokažemo kako se to radi. Ali za početak, bilo bi lijepo provjeriti postoji li potreban korisnik prije nego što ga izbrišete.

Počevši od MySQL 5.7, postoji jedna naredba za obje ove radnje:

ISPUSTI KORISNIKA AKO POSTOJI korisničko ime;

Ranije verzije MySQL-a zahtijevale su dvije odvojene komande:

ODOBRITE KORIŠTENJE NA *.* TO "username"@"host_or_IP_address"; DROP USER "username"@"host_or_ip_address";

Nažalost, u ovom slučaju, poruka o operaciji u MySQL konzoli je tradicionalno neinformativna 🙁 Stoga, da biste saznali da je došlo do brisanja korisnika MySQL korisnika, možete koristiti sljedeću naredbu koja prikazuje listu svih postojećih korisnika na trenutnom MySQL serveru:

SELECT User FROM mysql.user;

Ova verzija naredbe će prikazati samo korisnička imena. Ako trebate vidjeti hostove sa kojih se korisnici mogu povezati na server i listu privilegija, možete pozvati naredbu u sljedećem obliku:

SELECT User, Host, Grant_priv FROM mysql.user;

U tabeli mysql.user postoje i mnoga druga polja koja pohranjuju druge vrste privilegija i druge informacije, čiju kompletnu listu možete pronaći ovdje - https://mariadb.com/kb/en/library/mysqluser-table/

Neka vas ne zbuni što je ovo dokumentacija za MariaDB DBMS. Tehnički, ovo je isto što i MySQL, jer MariaDB je samo njegov izdanak ili fork od engleskog "fork" - grana, račva.

Zašto je to moralo da se uradi - opet bez pojma 🙂 Da li je moguće svima ponosno izjaviti da “imam svoj DBMS”? .. Ali, iskreno, nisam baš svestan tačnih motiva i razlika između MySQL-a i MariaDB. Stoga, ako znate nešto o ovome, bilo bi zanimljivo pročitati o tome u komentarima.

Izlazak iz MySQL konzole

To je sve, završio se životni ciklus baze podataka i korisnika, koji je započeo njihovim stvaranjem, a završio se njihovim brisanjem. Dakle, MySQL komandna linija sa kojom smo radili u konzoli servera koristeći uslužni program mysql više nam ne treba.

Ostaje samo izaći iz toga...

Čini se da je radnja trivijalna, ali mnogi u situaciji kada morate izaći iz MySQL komandne linije jednostavno zatvore serversku konzolu i ponovo je otvore. Naravno, možete se ponašati i na ovaj način, ali to oduzima dodatne sekunde radnog vremena i iznervira vas svaki put kada to treba da uradite.

Ispravno ponašanje u ovoj situaciji bilo bi samo pozivanje komande Izlaz na MySQL komandnoj liniji, nakon čega će se servis ljubazno oprostiti od nas 🙂

I samo nešto 🙂 Dakle, sljedeći put ne morate pokretati konzole i ponovo ih otvarati svaki put kada trebate izaći iz MySQL-a u konzoli i ponovo mu pristupiti da biste upravljali serverom.

To je sve što sam ti htio reći danas. Nadam se da će moj cheat sheet o radu sa MySQL komandnom linijom kroz konzolu biti od koristi ne samo meni, već i vama.

Govoreći o praktičnoj primeni informacija predstavljenih u članku, želim da vas podsetim da se gore navedene konstrukcije mogu koristiti ne samo u MySQL komandnoj liniji i konzoli servera, već iu phpMyAdmin konzoli i drugom softveru koji to obezbeđuje prilika.

Na vama je da li ćete ga koristiti ili ne. Ali, kao što sam rekao na samom početku članka, postoje situacije kada korištenje MySQL konzole može uštedjeti vrijeme i živce. A da li koristiti komandnu liniju svaki dan ili ne, stvar je ukusa i individualnih preferencija.

Napišite u komentarima koje komande najčešće koristite. Ili možda znate neke druge trikove. U svakom slučaju, podijelite svoje mišljenje sa ostalima i nastavite razgovor u komentarima drugih korisnika.

Obećavam da ćete u tom procesu naučiti puno novih stvari, baš kao i ja kada pišem svaki moj članak 🙂

To je sve! Sretno i vidimo se uskoro 🙂

P.S.: ako vam je potrebna web stranica ili trebate napraviti izmjene na postojećoj, a za to nema vremena i želje, mogu vam ponuditi svoje usluge.

Preko 5 godina iskustva profesionalni razvoj web stranica. Rad sa PHP, opencart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, Reaguj, Ugaoni i druge tehnologije za web razvoj.

Ispod je lista najkorisnijih i najčešće korištenih naredbi. MySQL sa primjerima.

mysql na početku reda znači da se naredba izvršava nakon unosa MySQL.

Simbol # ili $ na početku reda znači da se naredba izvršava iz komandne linije.

Za provjeru statusa servera MySQL trci:

Za FreeBSD:

# status usluge mysql-server

V CentOS/RHEL:

# status mysqld usluge

MySQL sa konzole ako je server MySQL je na istom hostu:

Za povezivanje sa serverom MySQL sa konzole ako je server MySQL nalazi se na udaljenom hostu db1.example.com:

$ mysql -u korisničko ime -p -h db1.example.com

Rad sa bazama podataka, tabelama - pregled, brisanje, uređivanje zapisa. Konzola

Kreirajte bazu podataka na MySQL server:

mysql kreiranje baze podataka

Prikaži listu svih baza podataka na serveru MySQL:

MySQL use ;

Prikaži sve tabele u bazi podataka:

mysql show tables;

Pogledajte format tabele u bazi podataka:

mysql opisati ;

Izbriši bazu:

mysql ispusti bazu podataka;

Obriši tabelu iz baze podataka:

mysql drop table ;

Prikaži sav sadržaj tabele:

MySQL SELECT * FROM ;

Prikažite kolone i sadržaj kolona u odabranoj tabeli:

Mysql prikazuje kolone iz ;

Prikaži redove u određenoj tabeli koja sadrži " što god ":

MySQL SELECT * FROM WHERE = "šta god";

Prikaži sve zapise u određenoj tabeli koja sadrži " Bob " i broj telefona " 3444444:

Mysql SELECT * FROM WHERE name = " Bob " AND phone_number = " 3444444 ";

Prikaži sve unose NE koji sadrži ime " Bob " i broj telefona " 3444444 ", sortirano po polju phone_number:

Mysql SELECT * FROM WHERE ime != " Bob " AND phone_number = " 3444444 " poredak po broju_telefona;

Prikaži sve unose koji počinju slovima " bob " i telefonskim brojem " 3444444 " u određenoj tabeli:

Mysql SELECT * FROM WHERE ime poput " Bob %" AND phone_number = " 3444444 ";

Prikaži sve unose koji počinju slovima " bob " i broj telefona " 3444444 ", ograničeno na unose od 1 do 5:

Mysql SELECT * FROM WHERE ime kao što je " Bob %" AND phone_number = " 3444444 " ograničenje 1.5;

Korištenje regularnih izraza ("REGEXP BINARY") za traženje unosa. Na primjer, za pretraživanje bez obzira na velika i mala slova, pronađite sve unose koji počinju slovom A:

Mysql SELECT * FROM WHERE rec RLIKE "^a";

Prikaži sve jedinstvene unose:

MySQL SELECT DISTINCT FROM ; mysql SELECT , FROM ORDER BY DESC;

Prikaži broj redova u tabeli:

Mysql SELECT COUNT(*) FROM ;

Mysql SELECT SUM(*) FROM ;

Uklanjanje kolone:

mysql alter table drop column ;

Dodavanje kolone u bazu podataka:

mysql alter table add column varchar(20);

Promjena naziva kolone:

mysql alter table change varchar(50);

Kreirajte kolonu s jedinstvenim imenom kako biste izbjegli duple nazive:

mysql alter table add unique();

Promjena veličine stupca:

mysql alter table modify VARCHAR(3);

Uklanjanje kolone iz tabele:

mysql alter table drop index ;

Mysql LOAD DATA INFILE " /tmp/filename.csv " zameni U POLJA TABELE ZAVRŠENA SA "," LINIJE ZAVRŠENE SA "n" (polje1,polje2,polje3);

Korisnici MySQL servera, lozinke - dodavanje, promjena korisnika i lozinki. Konzola

Kreiranje novog korisnika - povezivanje na server MySQL kao root, prebacite se na bazu podataka, dodajte korisnika, ažurirajte privilegije:

# mysql -u root -p mysql koristiti mysql; mysql INSERT INTO user (Host, User, Password) VALUES("%"," korisničko ime ", PASSWORD(" lozinka ")); mysql flush privilegije;

Promijenite korisničku lozinku s konzole na udaljenom hostu db1.example.org:

# mysqladmin -u korisničko ime -h db1.example.org -p lozinka " nova lozinka "

Promijenite korisničku lozinku iz konzole MySQL- povežite se kao root, ažurirajte lozinku, ažurirajte privilegije:

# mysql -u root -p mysql POSTAVI LOZINKU ZA " korisnika "@" ime hosta " = LOZINKA(" lozinka ovdje "); mysql flush privilegije;

Vraćanje/promjena lozinke root servera MySQL- stani MySQL, pokrenite bez tabela privilegija, povežite se kao root, postavite novu lozinku, izađite i ponovo pokrenite MySQL.

# /etc/init.d/mysql stop # mysqld_safe -skip-grant-tables & # mysql -u root mysql use mysql; mysql ažuriranje korisničke postavke password=PASSWORD(" newrootpassword ") gdje je User="root"; mysql; flush privilegije; mysql quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

Postavite root lozinku ako postoji root lozinka.

# mysqladmin -u root lozinka nova lozinka

Ažurirajte root lozinku:

# mysqladmin -u root -p stara lozinka nova lozinka

Postavljanje prava za povezivanje sa serverom sa lokalnog hosta sa lozinkom "passwd" - povezivanje podroot-a, prelazak na bazu podataka, podešavanje privilegija, ažuriranje privilegija:

# mysql -u root -p mysql koristiti mysql; mysql odobrenje upotrebe na *.* za bob @localhost identifikovan sa "passwd"; mysql flush privilegije;

Postavljanje privilegija za korisnika da koristi bazu podataka - povezivanje kao root, prelazak na bazu podataka, postavljanje privilegija, ažuriranje privilegija:

# mysql -u root -p mysql koristiti mysql; mysql INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VRIJEDNOSTI ("%","databasename","username","Y","Y","Y"," Y","Y","N"); mysql flush privilegije;

Mysql daje sve privilegije na ime baze podataka .* korisničkom imenu @localhost; mysql flush privilegije;

Ažurirajte informacije u bazi podataka:

Mysql UPDATE SET Select_priv = "Y",Insert_priv = "Y",Update_priv = "Y" gdje je = korisnik";

Brisanje reda u tabeli:

Mysql DELETE from where = "šta god";

Ažuriranje privilegija u bazi podataka:

mysql flush privilegije;

Sigurnosne kopije - kreiranje, vraćanje baze podataka. Konzola

Napravite rezervnu kopiju (dump) svih baza podataka u datoteci alldatabases.sql:

# mysqldump -u root -p lozinka -opt ; /tmp/alldatabases.sql

Napravite sigurnosnu kopiju jedne baze podataka u datoteku ime baze podataka.sql:

# mysql dump -u korisničko ime -p lozinka -baze podataka ime baze podataka ; /tmp/databasename.sql

Napravite sigurnosnu kopiju jedne tablice u datoteku ime baze podataka.ime-tablice.sql:

# mysql dump -c -u korisničko ime -p lozinka ime baze ime tabele ; /tmp/databasename.tablename.sql

Vraćanje baze podataka (ili tabele) iz sigurnosne kopije:

# mysql -u korisničko ime -p lozinka ime baze podataka< /tmp/databasename.sql

Kreiranje tabela baze podataka. Konzola

mala slova označavaju nazive kolona;
VELIKA slova - vrste i atributi kolona;
in (zagrade) - vrijednost tipa stupca.

Napravite tablicu primjer 1:

mysql CREATE TABLE (ime VARCHAR(20), srednje početno VARCHAR(3), prezime VARCHAR(35), sufiks VARCHAR(3), officeid VARCHAR(10), id korisnika VARCHAR(15), korisničko ime VARCHAR(8), email VARCHAR(35) ) ), telefon VARCHAR(25), grupe VARCHAR(15), datumska oznaka DATE, vremenska oznaka TIME, pgpemail VARCHAR(255));

Napravite tablicu primjer 2:

Mysql kreirati tabelu (personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, ime VARCHAR(35), srednje ime VARCHAR(50), prezime VARCHAR(50) default "bato");

Uslužni program komandne linije mysql je jednostavan SQL omot (sa mogućnostima biblioteke readline projekta GNU). Podržava interaktivne i neinteraktivne načine rada. U interaktivnom režimu, rezultati upita su predstavljeni u ASCII formatu. Kada se koristi u neinteraktivnom načinu rada (na primjer, kao filter), rezultat se prikazuje u tekstualnom formatu sa znakom tab kao separatorom (format izlaza se može promijeniti pomoću opcija komandne linije). Skripte se mogu pokrenuti kao što je prikazano u nastavku:

Shell > mysql baza podataka output.tab

Ako imate problema zbog nedostatka memorije na datom klijentu, koristite opciju --quick! Ovo će uzrokovati da mysql koristi funkciju mysql_use_result() umjesto funkcije mysql_store_result() za dobivanje rezultirajućeg preuzimanja podataka.

Korištenje mysql-a je vrlo jednostavno. Pokrenite mysql bazu podataka ili mysql --user=user_name --password=your_password bazu podataka e. Upišite SQL naredbu direktno u komandnu liniju, završavajući je jednim od sljedećih znakova: `;" , `\g" ili `\G" , a zatim pritisnite tipku ``Enter"'.

Uslužni program komandne linije mysql podržava sljedeće opcije:

Pomoć Prikažite pomoćne informacije o korištenju programa i izađite iz njega. -A, --no-auto-rehash Onemogućava automatsko ponavljanje. rehash treba koristiti za dobivanje hash tabela i polja. Ovo čini da se mysql brže pokreće. --prompt=... Postavlja komandnu liniju u specificiranom formatu. -b, --no-beep Isključuje zvučni signal greške. -B, --batch Paketni izlaz sa tab znakom kao separatorom, svaki red u novom redu. Datoteka historije se ne koristi. --character-sets-dir=... Direktorij u kojem se nalaze skupovi znakova. -C, --compress Koristi kompresiju podataka protokola servera/klijenta. -#, --debug[=...] Dnevnik otklanjanja grešaka. Zadana vrijednost je "d:t:o,/tmp/mysql.trace". -D, --database=... Ime baze podataka koju treba koristiti. Uglavnom se koristi u konfiguracijskoj datoteci `my.cnf. --default-character-set=... Postavite zadani skup znakova. -e, --execute=... --batch) -E, --vertical Print rezultati upita (nizovi) okomito. Možete proizvesti ovakav izlaz bez ove opcije završavanjem naredbi sa \G znakovima. -f, --force Nastavite s obradom čak i ako se naiđe na SQL grešku. -g, --no-named-commands Isključite imenovane komande Koristite samo \* komande ili koristite imenovane komande samo na početku reda koji se završava sa `;" . Od verzije 10.9 klijent je pokrenut sa ovom opcijom, uključeno default! S opcijom -g, međutim, duge naredbe i dalje rade iz prvog reda. -G, --enable-named-commands Omogućava imenovane komande. Duge komande su dozvoljene, kao i skraćene komande kao što je \*. -i, --ignore-space Zanemari razmak nakon imena funkcija. -h, --host=... Povežite se na bazu podataka na navedenom hostu. -H, --html Ispis izlaza kao HTML. -L, --skip-line-numbers Preskoči brojeve redova zbog grešaka. Korisno za poređenje rezultirajućih datoteka koje uključuju poruke o grešci. --no-pager Onemogućuje pejdžer i upisuje rezultat u stdout (na Unixu). Vidite i naredbu \h (online pomoć). --no-tee Zaključava izlaznu datoteku. Vidite i naredbu \h (online pomoć). -n, --unbuffered Obrišite bafer nakon svakog zahtjeva. -N, --skip-column-names Preskoči nazive kolona u rezultatima. -O, --set-variable var=opcija Postavite vrijednost varijable. Lista korištenih varijabli je prikazana preko --help. -o, --one-database Ažuriraj samo zadanu bazu podataka. Omogućava vam da preskočite druga ažuriranja baze podataka u dnevniku ažuriranja. --pager[=...] Postavlja tip izlaznih podataka. Po defaultu, ovo je varijabla okruženja PAGER. Njegove moguće vrijednosti su manje, više, cat [> ime datoteke] itd. Vidite i naredbu \h (online pomoć). Ova opcija ne radi u paketnom načinu rada. Pejdžer radi samo pod Unixom. -p, --password[=...] Lozinka koja se koristi prilikom povezivanja na server baze podataka. Ako lozinka nije navedena u komandnoj liniji, tada se traži od korisnika. Kada koristite kratku formu -p, ne ostavljajte razmak između parametra i vrijednosti lozinke. -P --port=... Broj TCP/IP porta za korištenje za povezivanje. -q, --quick Nemojte keširati rezultat. Iznesite red po red kako dolazi sa servera. Ovo može usporiti server ako je izlaz pauziran. Datoteka historije se ne koristi. -r, --raw Prikaži vrijednosti stupaca bez ikakve transformacije. Koristi se sa --batch . -s, --tihi Nečujni način rada. Prikaži samo poruke o greškama. -S --socket=... Socket fajl koji se koristi za povezivanje. -t --table Ispisati rezultat u obliku tabele. Podešeno prema zadanim postavkama za ne-serijski način rada. -T, --debug-info Štampajte neke informacije o otklanjanju grešaka kada program izađe. --tee=... Priložite nešto izlaznoj datoteci. Vidite i naredbu \h (online pomoć). Ova opcija ne radi u paketnom načinu rada. -u, --user=# MySQL korisničko ime ako ovaj korisnik trenutno nije aktivan. -U, --safe-updates[=#], --i-am-a-dummy[=#] Dozvoljava samo operacije UPDATE i DELETE pomoću tipki. Pogledajte ispod za više informacija o ovoj postavci. Ovu opciju možete resetirati postavljanjem argumenta --safe-updates=0 u konfiguracijskoj datoteci `my.cnf'. -v, --verbose Opširniji način izlaza (-v -v -v daje izlazni format tabele). V , --version Prikažite informacije o verziji i izađite iz programa -w, --wait Ako je veza sa serverom prekinuta, pričekajte i pokušajte je vratiti umjesto prekida.

Također možete postaviti sljedeće varijable putem -O ili --set-variable opcija komandne linije:

Ako unesete help u komandnu liniju, mysql program će izlistati naredbe koje podržava:

Mysql> help MySQL komande help (\h) Prikazuje dati tekst. ? (\h) Sinonim za pomoć. clear (\c) Obriši naredbu. povežite se (\r) Ponovo se povežite sa serverom. Dodatni argumenti su db i host. edit (\e) Uredite trenutnu komandu sa $EDITOR. ego (\G) Pošalji trenutnu MySQL komandu serveru i prikaži rezultat okomito. exit (\q) Izađite iz programa. Isto kao i prestati. go (\g) Pošalji trenutnu MySQL komandu serveru. nopager (\n) Blokirajte pejdžer, štampajte na stdout. notee (\t) Nemojte dodavati unose u izlaznu datoteku. pager (\P) Postavite PAGER . Prikaži rezultate upita putem PAGER-a. print (\p) Ispis trenutne komande. prompt (\R) Promijenite format prompta za mysql komande. quit (\q) Zatvorite program. rehash (\#) Vratite hash tabelu. izvor (\.) Izvršite datoteku SQL skripte. Navedite ime datoteke kao argument. status (\s) Dobijte informacije o statusu servera. tee (\T) Postavite opciju outfile. Dodajte nešto u datu izlaznu datoteku. koristiti (\u) Koristi drugu bazu podataka. Navedite ime baze podataka kao argument.

Komanda pejdžera radi samo pod Unixom.

Rezultat toga je sljedeći:

  • Nije dozvoljeno izvršavanje naredbi UPDATE ili DELETE osim ako ograničenja ključa nisu navedena u klauzuli WHERE. Međutim, možete prisiliti naredbe UPDATE / DELETE da se izvrše pomoću LIMIT izraza: UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
  • Svi preveliki rezultati su ograničeni na #select_limit# linije.
  • SELECT-ovi koji mogu zahtijevati više od #max_join_size# kombinacija redova za izvršenje će biti prekinuti.

Nekoliko korisnih savjeta za korištenje mysql klijenta:

Neki podaci su čitljiviji kada se prikazuju okomito umjesto uobičajeno korištenog horizontalnog izlaznog prozora. Na primjer, tekst koji je duži nego što je širok i koji sadrži mnogo novih redova često je mnogo lakši za čitanje okomito.

Mysql> SELECT * IZ mailova WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith piše: Thimble> Zdravo. Mislim da je ovo dobra ideja. Da li je neko upoznat sa UTF-8 Thimble> ili Unicodeom? U suprotnom, "staviću ovo na svoju TODO listu i vidjeti šta će se Thimble> dogoditi. Da, molim vas, učinite to. Pozdrav, Monty fajl: inbox-jani-1 hash: 190402944 1 red u setu (0,09 sek)

  • Možete koristiti opcije tee komande za prijavu. Može se pokrenuti sa --tee=... opcijom za mysql, ili interaktivno iz komandne linije sa tee komandom. Svi podaci prikazani na ekranu će takođe biti dodati navedenoj datoteci. Ovo može biti vrlo korisno u svrhu otklanjanja grešaka programa. Tee uslužni program se može blokirati iz komandne linije pomoću naredbe notee. Ponovnim pokretanjem tee komande ponovo će se omogućiti evidentiranje. Ako parametar za komandu tee nije specificiran, tada će se koristiti prethodni fajl. Imajte na umu da će komanda tee zapisati rezultate u datoteku nakon svake izvršene naredbe, neposredno prije nego što se pojavi komandna linija za sljedeću naredbu.
  • --pager[=...] opcija je omogućila interaktivno gledanje ili pretraživanje rezultata sa Unix programima manje, više ili slično. Ako eksplicitno ne navedete argument u ovom parametru, mysql klijent će potražiti varijablu okruženja PAGER i postaviti vrijednost na pager. Program za pejdžer se takođe može pokrenuti iz interaktivne komandne linije komandom pejdžera i zaustaviti naredbom nopager. Naredba može uzeti argument, što je opciono; pager će biti postavljen na vrijednost ovog argumenta Naredba pager se može pozvati bez argumenta, ali to zahtijeva korištenje opcije --pager ili odgovarajuću zadanu postavku stdout . Komanda pager radi samo na Unixu jer koristi funkciju popen(), koja nije dostupna u Windowsima. Umjesto toga, na Windows-u možete koristiti opciju tee, iako je u nekim situacijama to manje zgodno od korištenja naredbe pager.
  • Nekoliko savjeta o komandi pager: Može se koristiti za pisanje u datoteku: mysql> pager cat > /tmp/log.txt i rezultati će biti poslati samo u datoteku. Programi koje poziva naredba pager mogu prihvatiti sve važeće opcije: mysql> pager less -n -i -S Obratite posebnu pažnju na opciju -S u primjeru iznad. Može biti od velike pomoći prilikom gledanja rezultata. Pokušajte s horizontalnim izlazom (završite komande sa "\g", ili ";") i vertikalnim izlazom (na kraju komandi sa "\G"). Veoma glomazne izlazne rezultate ponekad je teško pročitati sa ekrana, u ovom slučaju naredba less sa opcijom -S će vam omogućiti da interaktivno pregledate rezultate s lijeva na desno, dok ako su linije dužine duže od širine ekrana pojavljuju, njihov izlaz će se nastaviti u novom redu. Izlaz podataka u takvim slučajevima je čitljiviji. Kada interaktivno pozivate naredbu less s opcijom "-S", možete promijeniti njen način rada (omogućeno/onemogućeno) iz komandne linije. Za više informacija o manje, pogledajte opis naredbe "h".
  • U zaključku, napominjemo (ako to već niste shvatili iz prethodnih primjera) da je moguće kombinirati vrlo složene načine obrade rezultata. Dakle, u sljedećem primjeru, rezultati će biti poslani u dva različita direktorija montirana na dva različita čvrsta diska pod /dr1 i /dr2, a ipak se rezultati mogu vidjeti na ekranu pomoću manje komande: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | manje -n -i -S
  • Gore navedene funkcije se također mogu kombinovati: pokretanjem tee i postavljanjem pagera na manje, možete vidjeti rezultate pomoću manje Unix naredbe i dalje pisati u datoteku. Razlika između Unix pomoćnog tee-a koji koristi program za pejdžer i ugrađene tee komande u mysql klijentu je u tome što ugrađena tee naredba radi čak i ako tee pomoćni program nije dostupan na Unixu. Tee ugrađeni takođe snima sve što je prikazano na ekranu, dok Unix tee uslužni program koji se koristi sa pejdžerom ne radi mnogo toga. Na kraju, ali ne i najmanje važno, interaktivna tee komanda je pogodnija za uključivanje/isključivanje načina rada ako ponekad trebate onemogućiti ovu funkciju prilikom pisanja u datoteku.

Možete promijeniti format prompta na komandnoj liniji mysql klijenta.

Dostupne su sljedeće opcije upita:

Opcija Opis
\vmysql verzija
\dnaziv baze podataka koju treba koristiti
\hime hosta za povezivanje
\pbroj porta preko kojeg se uspostavlja veza
\uKorisničko ime
\Upunu adresu [email protected]
\\ obrnuta kosa crta `\"
\nznak novog reda
\ttabelarno
\ prostor
\_ razmak sa donjom crtom
\Rvojna vremenska zona (0-23)
\rvrijeme prema standardnoj vremenskoj zoni (1-12)
\mminuta
\ydvije cifre godine
\Yčetiri cifre godine
\Dpuni format datuma
\ssekundi
\wdan u sedmici u troslovnom formatu (pon, uto,...)
\PAM/PM (am/pm)
\omjesec u numeričkom formatu
\Omjesec u formatu od tri slova (jan, februar, ...)
\cBrojač koji broji broj unesenih naredbi

`\" iza kojeg slijedi bilo koje drugo slovo jednostavno dovršava to slovo.

Opcije upita možete postaviti na sljedeće načine:

U varijablama okruženja Možete postaviti varijablu okruženja MYSQL_PS1 za string upita. Na primjer: shell> export MYSQL_PS1="(\ [email protected]\h)[\d]>" `my.cnf' `.my.cnf" Možete postaviti prompt opciju u bilo kojoj MySQL konfiguracijskoj datoteci pod mysql grupom. Na primjer: prompt=(\ [email protected]\h) [\d]>\_ Na komandnoj liniji Možete postaviti --prompt opciju iz komandne linije mysql. Na primjer: shell> mysql --prompt="(\ [email protected]\h)[\d]>" ( [email protected]) > Interaktivno Također možete koristiti naredbu prompt (ili \R) za interaktivnu promjenu postavki prompta. Na primjer: mysql>prompt(\ [email protected]\h) [\d]>\_ PROMPT postavljeno na "(\ [email protected]\h) [\d]>\_" ( [email protected]) > ([email protected]) > prompt Povratak na originalne (podrazumevane) postavke PROMPT-a u mysql> mysql> uslužnom programu