Superutilizator (administrator) trebuie să utilizeze o parolă pentru a lucra cu MySQL.
Acesta trebuie să fie admis în baza de date individuală a tabelului „db“.
Ea nu are nevoie de o parolă, ci numai permisiunea de a efectua comenzi „Reîncărcare mysqladmin“ și „processlist mysqladmin“. Acesta poate fi permis să o bază de date individuală prin intermediul tabelului „db“.
ATENȚIE! Trebuie să utilizați funcția de parolă () pentru a crea un utilizator care are parola. baza de date MySQL se așteaptă să primească parola criptate.
Atribute definite în tabelul de utilizator suprascrie atributele stabilite în tabelul DB. În cazul în care serverul acceptă mai multe baze de date, este mai bine pentru a crea un utilizator fără permisiuni în tabelul de utilizator și să alocați drepturi de acces la baza de date privind datele din tabel db.
Dacă utilizați MIT pachet de fire, rețineți că localhost nu va funcționa, ca pachetul de fire MIT nu are suport pentru socket-uri de conectare. Acest lucru înseamnă că ar trebui să stabilească întotdeauna nume de gazdă (nume de server) atunci când vă conectați, chiar dacă utilizați același server.
Sunt clasificate în funcție de servere de nume și utilizatori.
Sunt clasificate în funcție de servere de nume, utilizatorii și baze de date.
Sunt clasificate în funcție de servere de nume și baze de date.
Pornind de la versiunea 3.20.19 serverul a introdus un alt truc, pentru a încerca să dau seama modul în care utilizatorul accesează această bază de date. Să presupunem existența unui utilizator pe nume Joe, care este înregistrat după cum urmează:
INSERT INTO VALUES utilizator ( '%. External.domain.com', '', '', 'N', 'N', 'N', 'N', 'N', 'N', 'N', ' N '' N '' N „);
Verificarea tabelelor bazei de date vor fi efectuate pentru utilizator „“ (nume martor), mai degrabă decât utilizatorul, Joe, chiar dacă utilizatorul Joe are o intrare în tabela de acces la baza de date (tabelul db).
În general, cel mai bine este să se evite utilizarea de expresii regulate în câmpul SQL Server Name. Acest lucru simplifică depanare.
Mai exact, setați toate câmpurile „name server“ în „%“ și clar serverele de masă. După ce toate încep să funcționeze în mod normal, este posibil să se înceapă experimentarea cu adăugarea de servere de nume din tabelul de server în cazul în care o astfel de necesitate.
Dacă primiți un mesaj despre „Acces refuzat“ eroare, este probabil ca te-a contactat in mod normal `mysqld„daemon, dar aveți informații greșite în tabelul de utilizator.
Cum parole
Parola criptată este stocată în tabelul de utilizator ( „utilizator“).
- Atunci când un server de conexiune trimite un număr aleatoriu la client.
- Clientul criptează parola la ceva care are un server (acesta stochează parolele în formă criptată), și calculează numărul de primit de la numărul aleatoriu server și o parolă criptată. Acest număr este trimis la server.
- Serverul calculează numărul de parola criptate stocate, iar numărul aleator generat. În cazul în care acest număr se potrivește cu cel care a trimis clientului, se stabilește conexiunea.
Rularea mysqld (la boot)
Copiați scriptul mysql.server din directorul bin MySQL în /etc/init.d.
Check out tot drumul la script mysql.server. Verificați și safe_mysqld în /etc/init.d/mysql.server și /etc/rc2.d/S99mysql.server.
este necesar să se adauge în Caldera Deschideți Linux în fișierul /etc/rc.d/rc.local după cum urmează:
Desigur, este necesar să specificați calea corectă către directorul cu MySQL.
Pornirea mysqld (sistemul de rulare)
mysqld poate fi rulat de către orice utilizator. În mod implicit, ruleaza ca root. În cazul în care se execută în numele oricărui utilizator, este necesar să se stabilească permisiunile corecte pentru toate fișierele necesare.
Log on ca utilizator-proprietar al MySQL și să dea următoarea comandă (presupunând că executabil MySQL este în calea ta Dacă nu, specificați calea completă.):
Opțiunile care sunt stabilite compilează la pachet
La fel ca cele mai multe programe pentru Unix, MySQL vine sub formă de cod sursă, care trebuie compilat. Înainte de compilare, puteți efectua unele pachet de instalare la nivel de sursă.
Închiderea Conectări utilizator alternative
Oprirea automată a atribui valori implicite
În mod implicit, MySQL va atribui automat câmpurile implicite care nu sunt declarate în mod explicit. MySQL se va face în funcție de tipul unui anumit domeniu. Dacă preferați să teren cu valori nedeclarate au valoare NULL, apoi adăugați o linie la global.h fișier:
Schimbarea lungimea cheii utilizate
În mod implicit, MySQL trateaza doar 1120 bytes cheie. Puteți crește această valoare prin editarea fișierului și schimbarea N_MAX_KEY_LENGTH valoare nisam.h. Rețineți că acest lucru poate duce la degradarea performanței. Nu există nici un motiv pentru a face acest lucru este mai mică, pentru că puteți defini o cheie, care este mai scurtă decât câmpul specificat. Mai multe detalii sunt descrise în secțiunea „Keys“.
Modificarea ordinii de sortare
În mod implicit, MySQL sortează rândurile în funcție de iso8859-1 (Latin1). Puteți schimba acest lucru în timpul configurării, specificând următoarea opțiune.
În cazul în care [charset] poate fi unul dintre: Latin1, latin2, koi8_ru, dec8, dos, hp8, swe7, usa7.
Pentru a afla mai multe despre cum să adăugați un nou set de caractere, a se vedea liniile din directorul sursă.
Notă. Dacă modificați seturi de caractere creat deja baza de date, va trebui să execute isamchk cu opțiunea -e și -q pe toate mesele, sau altfel MySQL nu va funcționa corect.
Adăugarea Funcții la MySQL
Dacă știți C ++, și Yacc, este relativ ușor să adăugați o funcție bază de date MySQL. Dacă nu înțelegi, problema mai rău.
Mai întâi adăugați o linie la fișierul cu funcția numele sql_lex.cc într-o matrice sql_functions.
Apoi se adaugă două linii la sql_yacc.y fișierul. Prima definește simbolul preprocesorul yacc. Trebuie să adăugați acest lucru la începutul fișierului. Apoi, definiți parametrii funcției și de a crea un „element“ cu acești parametri.
În fișier item_func.h declară o clasă care moștenește de la Item_num_func sau Item_str_func, în funcție de faptul dacă funcția returnează un număr sau un șir de caractere.
În intem_func.cc adăuga:
Dacă specificați o funcție numerică sau
String * Item_func_newname :: Str (String * str)
dacă specificați o funcție șir.
Pentru funcțiile de coarde, ar trebui să definiți, de asemenea, funcția următoarea:
cel puțin ar trebui să fie calculată „MAX_LENGTH“ pe baza parametrilor primite. MAX_LENGTH - numărul maxim de caractere care funcția se pot întoarce (lungimea maximă a valorii de întoarcere).
Pentru funcțiile string opțiunea „String * str“, oferă un tampon pentru a menține rezultatul. O funcție șir trebuie să returneze șirul care deține rezultatul.
Toate funcțiile string ar trebui să evite alocarea de memorie mai mult decât au nevoie de absolut! Resursele sistemului nu sunt infinite.
descărcare rapidă
Cel mai rapid mod de a încărca date în MySQL - comanda LOAD DATA INFILE. Este de 3-20 ori mai repede decât folosind declarații INSERT. Pentru și mai multă performanță, puteți utiliza următoarea procedură pentru a dezactiva formarea unei chei pe masă, în timp ce datele sunt încărcate. Pentru aceasta trebuie să fie în directorul bazei de date MySQL, sau pentru a oferi calea completă la baza de date.
isamchk -rq -k0 [YourDatabaseName] / [nume_tabelă]
Timpul maxim de sortare?
comentarii utile
Dacă aveți o aplicație care necesită un număr mare de fire, este o modalitate buna de a reduce valoarea și recordbuffer sortbuffer la aproximativ 32K. Puteți reduce chiar recordbuffer la 8KB fara probleme. Reducerea în continuare poate fi considerată o valoare keybuffer variabilă la o dimensiune de 512KB. Aceasta salvează o mulțime de memorie, și de a îmbunătăți eficiența operațională.
Mici trucuri pentru a îmbunătăți performanța
Odată ce ați descărcat datele din baza de date, puteți rula comanda „-a isamchk“ pe mesele. Programul isamchk colectează statistici despre tabele, puteți utiliza Instrumentul de optimizare. În general, trebuie să rulați isamchk doar o singură dată în tabel. Se presupune că datele din tabel în timpul isamchk în reprezentare tipică pentru masa ta.
optimizare interogare
Ce optimizare se realizează într-o clauză WHERE?
- Eliminarea bretele (paranteze eliminate toate inutile)
((A și b) și c OR (((a și b) și (c și d)) -> (a și b) sau (a și b și c și d) - Constantele de coagulare efectuate
(A b> 5 AND b = 5 - Eliminarea condițiilor de testare în termeni constante (necesară datorită plierii constantă).
(B> = 5 AND b = 5) OR (b = 6 și 5 = 5) sau (B = 7 și 5 = 6) -> = B = 5 sau B = 6 - În cazul în care opțiunea nu este posibil, se returnează un șir gol.
- Căutați toate cheile care pot fi utilizate. Utilizați tasta care găsește mai puține înregistrări. Această cheie este utilizată în următorii termeni:
=,>,> =
Optimizare de memorie utilizate tabele
Există câteva lucruri pe care le puteți face pentru a minimiza cantitatea de spațiu care este utilizat de masa dumneavoastră. În primul rând, folosiți un pointer nul ori de câte ori este posibil. Acest lucru va accelera interogări și stoca 1 bit pe câmp.
Puteți salva o mulțime de spațiu folosind variabile întregi mai mici. De exemplu, MEDIUMINT de multe ori destul de suficient.
În general, ar trebui să alegeți cel mai mic tipul de date, care va trebui, dacă ai probleme cu memoria.
Rețineți că un câmp de lungime fixă în MySQL sunt procesate mult mai rapid. Evitarea câmpuri de lungime variabilă (VARCHAR, BLOB), eficiența poate fi îmbunătățită cu 10-200%.
Nepotrivire de tip în INSERT
În prezent, o instrucțiune INSERT dă eroare doar când introduceți un pointer nul (NULL), într-o coloană care nu este gol.
Când utilizați INSERT, sau echipa care poate afecta o mulțime de înregistrări, următoarele:
- Valorile sunt convertite într-un tip de drept (prin întreg / reală / string la număr întreg / reale / string) înainte de a salva.
- Liniile prea lungi sunt trunchiate, și crește valoarea „avertismente“.
- Dacă valoarea este sub valoarea minimă pentru coloana este introdusă o valoare minimă și crește valoarea „avertismente“ variabile.
- Dacă valoarea este mai mare decât valorile maxime pentru coloana, se introduce valoarea maximă, și crește valoarea „avertismente“ variabile.
- La conversia unui șir de caractere la o valoare întreagă este trunchiată la prima non-cifră. În cazul în care șirul are un caracter care nu este un număr, aceasta crește valoarea „Avertismentele“ variabile.
- La conversia unui șir de caractere la un punct plutitor crește valoarea „avertismente“ variabile, în cazul în care, după un număr are caractere, cu excepția punctului.
În timpul clientului din cauza „informații avertismente“ serverul returnează numai atunci când se utilizează „ALTER TABLE“ sau „LOAD DATA DE LA. “.
Ce numărul de MySQL
Versiunile MySQL sunt numerotate după cum urmează:
Dacă prima cifră este schimbat, înseamnă că au fost făcute schimbări majore. Acestea pot include suport pentru noi formate de fișiere, noi protocoale, etc. Să fie pregătit să facă unele modificări la aplicațiile dvs. înainte de a rula după actualizare. Cel puțin va trebui să arunce și reîncărcați mesele.
Semnificativ nou cod / funcționalitate. Aceasta poate include o mică schimbare în sprijinul sintaxa SQL și interfața cu utilizatorul. Nu trebuie să facă schimbări dramatice în aplicațiile dvs., dar cu atenție și verificați-le înainte de execuție.
Schimbări în condiții de siguranță mici, care nu ar trebui să rupă nimic în sysop în afară. Cea mai mare problemă aici - adăugarea de cuvinte cheie SQL care sunt în conflict cu numele de tabelă existente. Dacă evitați să utilizați cuvinte cheie standard, SQL-92 pentru numele dumneavoastră de masă (ca, de fapt, ar trebui să fie.). toți ar trebui să fie bine.
O idee bună - verificați întotdeauna fișierul NEWS când descărcați o versiune nouă. Acest lucru ar trebui să vă dea o idee despre ce sa schimbat de la ultima modificare.
client de protocol / server
În orice caz, o descriere detaliată a protocolului „client-server“, folosit de pachetul MySQL pentru comunicarea între client și serverul de baze de date.
denumiri
descriere detaliata
Fiecare pachet transmis are următoarele prefixele:
[3: pachete de lungime] [lot număr] date
Când primirea se adaugă pachetul [0] după fiecare pachet primit pentru a obține un simplu siruri de eroare de manipulare.
Pachetele non începe de la 0 și crește pentru fiecare trimise / primite de pachete.
tipuri de pachete
> [Protocol versiunea] [șir de caractere: parola de semințe criptă]
Uită-te în dosarul password.c sursă MySQL ce metodă este folosită pentru a cripta parolele. Parola ar trebui să fie lăsată goală în cazul în care utilizatorul nu are nici o parolă.
[0] [Lungime: affected_rows] [lungime: id unic]
Se poate veni în orice moment.
> [255] [șir: mesaj de eroare]
[0] [Lungime: rânduri afectate] [Lungime: insera id] (Inserare, șterge.)
> [Lungime: COLUMN_COUNT] (rezultat interogare)
> pachete de date de câmp Coloana
> pachete de date Row
Datele sunt transmise până când este un pachet care constă numai dintr-un singur caracter [254]. Atenție: pot exista pachete care încep cu 254! Fiecare tip de ambalaj „date“ este câmpul „Numărul de coloane“.
Formatul fiecărui câmp:
[: Lungime] == NULL_LENGTH -> câmp NULL
[: Lungime] [] (date de lungime șir nu se termină cu \ 0!)
pachet de date coloană cuprinde cinci coloane cu următoarele date:
Când se utilizează list_fields echipa are o coloană a șasea:
[: Default String]
Uită-te la fișiere libmysql.c, password.c net.c și mai multe informații despre formatul pachetelor.
Aflați mai multe despre foile de calcul
Pentru o descriere a tabelului, utilizarea (trebuie să mergeți la directorul care conține un tabel, informații despre cazul în care v-ar dori să primească general, va fi de $ DataDir / [DBNAME], în cazul în care dbname - numele bazei de date care conține tabelul ..):
Pentru mai multe informații despre tabel, încercați:
Valoarea statistică folosită de optimizatorul. Se spune cât de multe înregistrări sunt pentru această cheie. O cheie unică are întotdeauna o valoare de 1. Acest lucru se poate schimba după tabel este încărcat și stabilizat cu ajutorul -a isamchk. În mod implicit, 30.
MySQL FAQ are o multitudine de informații cu privire la acest subiect.
Taste și totul despre ei.
Mai jos este dat unele informații de nivel redus de modul în care sunt stocate și utilizate în MySQL chei.
Dimensiunea blocului curent al B-arborele este de 1024 și toate blocurile (cu excepția rădăcinii) - cel puțin 2/3 din total. Pentru un identificator tipic (id = 4 octeți), înseamnă 1024 / (4 + 4) * 2/3 = 85 chei în conformitate cu înregistrarea, și astfel este posibil să se găsească în poziția de înregistrare reală este de 5 poziționare.
Dacă doriți indexează B-arbori au fost 100% completă, executați isamchk cu opțiunea -rq peste fișierele de masă.
Numai prima parte a cheii poate fi comprimat prefix. Dacă două chei au același prefix, cealaltă parte a cheii va ocupa un octet. Toate piesele string mai mult de 4 caractere sunt eliminate trailing spații.
Dacă o cheie dimensiune fixă, nisam folosește binar de căutare în fiecare bloc, sau de a folosi căutare secvențială.
Toate blocurile cheie de citire / scrise prin key_buffer (implicit 1M), astfel încât unitatea de rădăcină este întotdeauna tamponată.
MySQL: planuri pentru viitor
Următoarele sunt planuri pentru dezvoltarea în continuare și îmbunătățirea pachetului MySQL și versiunile sale viitoare.
- În versiunea 3.21.0 toate tipurile de câmpuri sunt scrise ca clase, și se face noi de optimizare pentru cazul în care.
- Masa metoda de blocare va fi adăugat în versiunea 3.21.0.
- În versiunea 3.22.0 vor fi adăugate versiuni simple, lingvistice. Acesta va include suport pentru bucle și subrutine.
- Adăugarea unui built-in versiuni lingvistice 3.22.0 va face posibilă determinarea procedurii de tabele de modificare.
- Toate posibilitățile, cerând la resurse, poate reduce foarte mult performanța. Prin urmare, este destinat să facă la compila pachetul lor ar putea fi oprit în caz de absență în ele și necesitatea de a îmbunătăți productivitatea.
Includerea tabelelor de blocare și a procedurilor stocate ar trebui să meargă un drum lung spre furnizarea de oameni cu funcționalitatea de care au nevoie, fără un impact semnificativ asupra eficienței MySQL.
se adaugă proprietăți, cum ar fi punctele de vedere, revocați și declanșează la un moment dat opțional. Ele necesită pachet de procesare aprofundată.
exterior interioară și se alătură, ele pot fi adăugate în versiunea 3.21.0
Curente în Linux
Când MySQL rulează pe un sistem Linux si foloseste fire Linux, veți vedea un minim de trei procese. De fapt, ea curge. Va exista un singur fir pentru managerul Linux Fire, o să se ocupe de conexiunea și unul pentru a procesa semnalele.