Mysql windows-opdrachtregel. De basis van het beheren van MySQL via de opdrachtregel. De MySQL-server starten en stoppen met behulp van de MySQL-beheerder

De MySQL-server starten en stoppen vanaf de opdrachtregel

U kunt de MySQL-server op twee manieren handmatig starten:

Dubbelklik op het bestand mysqld-nt.exe in de submap bin van de map waarin MySQL is geïnstalleerd.

Open een Windows-opdrachtpromptvenster. Om dit te doen, klikt u op de knop Start, selecteert u Uitvoeren in het menu, voert u in het venster Programma uitvoeren dat in het veld Openen verschijnt de opdracht cmd in en klikt u op OK. Er verschijnt een opdrachtregelvenster op het scherm (Fig. 1.25).

Rijst. 1.25. Opdrachtpromptvenster


Voer bij de opdrachtprompt de opdracht in

mysqld-nt

en druk op de Enter-toets. De MySQL-server wordt gestart.

Als bij het configureren van de server het pad naar de submap bin niet is toegevoegd aan de waarde van de systeemvariabele Path, moet u om de server te starten niet alleen de bestandsnaam invoeren, maar bijvoorbeeld ook het volledige pad ernaartoe :

C: \ Program Files \ MySQL \ MySQL Server 5.0 \ bin \ mysqld-nt

Als u diagnostische berichten over serveractiviteit in een opdrachtpromptvenster wilt bekijken, in plaats van mysqld-nt, typt u

mysqld-nt –console

Aandacht!

Als je het root-wachtwoord niet hebt opgegeven bij het instellen van de MySQL-server, dan moet je een wachtwoord instellen wanneer je de server voor het eerst start (anders kan iedereen de server als root beheren zonder wachtwoord).

Om het root-wachtwoord in te stellen, opent u een nieuw opdrachtpromptvenster en voert u de volgende opdracht in:

mysqladmin -u root-wachtwoord<пароль>

(of C: \ Program Files \ MySQL \ MySQL Server 5.0 \ bin \ mysqladmin -u root-wachtwoord<пароль>als het pad naar de submap bin niet is toegevoegd aan de waarde van de systeemvariabele Path bij het configureren van de server) en druk op Enter.

Als u in de toekomst het root-gebruikerswachtwoord moet wijzigen, voert u dezelfde opdracht uit, alleen met de optie -p:

mysqladmin -u root -p wachtwoord<новый пароль>

Wanneer de prompt Wachtwoord invoeren verschijnt, voert u het oude wachtwoord in en drukt u op Enter.

Als u ten slotte de MySQL-server moet stoppen, voert u de opdracht uit:

mysqladmin -u root -p afsluiten

en voer bij de prompt Wachtwoord invoeren het root-wachtwoord in. Druk op de Enter-toets. De MySQL-server wordt gestopt.

U kunt ook het grafische hulpprogramma MySQL Administrator gebruiken om de MySQL-server te starten en te stoppen.

De MySQL-server starten en stoppen met behulp van de MySQL-beheerder

Volg deze stappen om de MySQL-server te starten met het grafische hulpprogramma MySQL Administrator.

1. Start het MySQL Administrator-programma (Start → Alle programma's → MySQL → MySQL Administrator). Het serververbindingsvenster verschijnt op het scherm (Fig. 1.26).

Rijst. 1.26.


2. Houd de Ctrl-toets ingedrukt en klik op de knop Overslaan die in de rechterbenedenhoek van het venster verschijnt in plaats van op de knop Annuleren. Het hoofdvenster van MySQL Administrator verschijnt op het scherm (Fig. 1.27).

Rijst. 1.27. Hoofdvenster MySQL-beheerder


4. Als de MySQL-server niet als Windows-service is geconfigureerd, wordt de knop Service starten in het rechterdeelvenster van het venster grijs weergegeven. U moet de volgende voorbereidende stappen doorlopen:

1) ga naar het tabblad Service configureren. Zoek de knop Nieuwe service installeren onderaan het tabblad en klik erop;

2) in het dialoogvenster dat verschijnt, specificeert u de naam van de service en klikt u op de knop OK;

3) Voer in het veld Config Filename het pad in naar het configuratiebestand my.ini (Fig. 1.28), bijvoorbeeld C: \ Program Files \ MySQL \ MySQL Server 5.0 \ my.ini. Rode letterkleur betekent dat het bestand niet is gevonden; als de kleur is veranderd in normaal, dan is het pad correct;

4) voer in het veld Pad naar binair het pad naar het bestand mysqld-nt.exe in, bijvoorbeeld C: \ Program Files \ MySQL \ MySQL Server 5.0 \ bin \ mysqld-nt;

6) ga terug naar het tabblad Service starten / stoppen.

Rijst. 1.28. Het tabblad Service configureren 5. Klik op de knop Service starten. De MySQL-server wordt gestart.


Aandacht!

Als u het root-gebruikerswachtwoord niet hebt opgegeven bij het instellen van de MySQL-server, moet u dit instellen wanneer u de server voor het eerst start (anders kan iedereen de server als root beheren zonder wachtwoord). In de huidige versie van MySQL Administrator is het instellen van het root-wachtwoord niet beschikbaar en om deze bewerking uit te voeren, moet u het opdrachtregelprogramma mysqladmin gebruiken (zie de subsectie "De MySQL-server starten en stoppen vanaf de opdrachtregel").

Volg deze stappen om de MySQL-server te stoppen met MySQL Administrator.

1. Start het MySQL Administrator-programma (Start → Alle programma's → MySQL → MySQL Administrator). Het serververbindingsvenster verschijnt op het scherm (zie Fig. 1.26).

Serverhost - waarde localhost (lokale computer);

Poort - het poortnummer dat is geselecteerd bij het configureren van de server (standaard is 3306);

Gebruiksnaam - rootwaarde;

Wachtwoord - Het wachtwoord voor de rootgebruiker. Klik op de OK-knop.

3. Klik in het hoofdvenster van MySQL-beheerder in het linkerdeelvenster op Servicebeheer.

4. Klik in het rechterdeel van het venster op de knop Service stoppen. De MySQL-server wordt gestopt.

In de volgende paragraaf leert u hoe u de MySQL-server start met behulp van Windows-beheertools.

De MySQL-server starten en stoppen vanaf het configuratiescherm

Als de MySQL-server is geconfigureerd als een Windows-service met behulp van de installatiewizard (zie de subsectie "De MySQL-server configureren") of met het hulpprogramma MySQL Administrator (zie de subsectie "De MySQL-server starten en stoppen met de MySQL-beheerder"), dan start en stop het met behulp van de Services-component van het Configuratiescherm.

Om het onderdeel Services op te roepen, klikt u op de knop Start, selecteert u Configuratiescherm in het menu, dubbelklikt u vervolgens op het pictogram Systeembeheer in het Configuratiescherm en dubbelklikt u ten slotte in het venster Systeembeheer op het pictogram Services. Het venster Services verschijnt op het scherm (Fig. 1.29) met een lijst van alle lokale services.

Rijst. 1.29. MySQL-service in het configuratiescherm


Klik in het venster Services op de naam van de MySQL-service (de naam wordt bepaald wanneer de service wordt gemaakt in de installatiewizard of in de MySQL-beheerder). Klik vervolgens op de gewenste link onder de servicenaam: Service starten, Service stoppen of Service opnieuw starten.

Nadat de MySQL-server actief is, kunt u er verbinding mee maken. Hoe u dit doet, leert u in de volgende paragrafen.

Maak verbinding met de server vanaf de opdrachtregel

Volg deze stappen om vanaf de opdrachtregel verbinding te maken met de MySQL-server.

1. Open een Windows-opdrachtpromptvenster. Om dit te doen, klikt u op de knop Start, selecteert u Uitvoeren in het menu, voert u in het venster Programma uitvoeren dat verschijnt de opdracht cmd in het veld Openen in en klikt u op OK.

2. Voer in de opdrachtregel (zie Fig. 1.25) het commando in

mysql -h<Имя компьютера>-u<Имя пользователя>-P

(waar<Имя компьютера>is de naam van de computer waarop de server draait) en druk op de Enter-toets. Wanneer de prompt Voer wachtwoord in verschijnt, voert u het gebruikerswachtwoord in.

Als u verbinding moet maken met een MySQL-server die op dezelfde computer draait, kan de computernaam (localhost) bijvoorbeeld worden weggelaten

mysql -u root -p

Nadat verbinding is gemaakt met de server, verandert de opdrachtregelprompt in mysql> (Figuur 1.30). Nu kunt u aan de slag met de database: tabellen toevoegen, gegevens invoeren en opvragen, nieuwe gebruikers registreren, enz.

Rijst. 1.30. Verbinding maken met MySQL Server vanaf de opdrachtregel


Om de verbinding met de server te verbreken, typt u de opdracht op de opdrachtregel

en druk op de Enter-toets.

Een alternatieve manier om verbinding te maken met de MySQL-server wordt geboden door het grafische hulpprogramma MySQL Query Browser.

Verbinding maken met de server met behulp van MySQL Query Browser

MySQL Query Browser is een interface voor het maken, bewerken en uitvoeren van SQL-statements. Het is handiger dan de opdrachtregel. Als je hebt besloten om de MySQL Query Browser te gebruiken om met de database te werken, volg dan deze stappen om verbinding te maken met de server.

1. Start de MySQL Query Browser (Start → Alle programma's → MySQL → MySQL Query Browser). Het serververbindingsvenster verschijnt op het scherm (Fig. 1.31).

Rijst. 1.31. Venster MySQL-serververbinding


2. Voer in de velden van het serververbindingsvenster de verbindingsparameters in:

Serverhost - De naam van de computer waarop de MySQL-server wordt uitgevoerd.

Poort - het poortnummer dat is geselecteerd bij het configureren van de server (standaard is 330 6);

Gebruikersnaam - gebruikersnaam;

Wachtwoord - gebruikerswachtwoord;

Standaardschema - De naam van de database waarmee u gaat werken (dit kan een bestaande of een nieuwe database zijn).

3. Klik op OK. Als u een naam voor de nieuwe database hebt ingevoerd, klikt u in het dialoogvenster dat verschijnt op de knop Ja om de database te maken.

Nadat u verbinding heeft gemaakt met de server, verschijnt het hoofdvenster van de MySQL-querybrowser op het scherm (Fig. 1.32). Hierin kunt u alle bewerkingen met de database uitvoeren: tabellen toevoegen, gegevens invoeren en opvragen, nieuwe gebruikers registreren, enz.

Rijst. 1.32. MySQL Query Browser Hoofdvenster


Aandacht!

Het standaardlettertype dat in MySQL Query Browser wordt gebruikt om SQL-query's weer te geven, ondersteunt geen Russische letters. Om Russische letters in verzoekteksten in te voeren, moet u een ander lettertype selecteren (bijvoorbeeld Arial of Book Antiqua). Om dit te doen, opent u in het hoofdvenster van MySQL Query Browser het menu Extra en selecteert u Opties. Klik in het venster Opties dat verschijnt in het linkerdeelvenster op Algemene opties en selecteer in het rechterdeelvenster in het veld Codelettertype het gewenste lettertype uit de lijst. Klik op de knop Toepassen.

Om de verbinding met de server te verbreken, sluit u eenvoudig het venster MySQL Query Browser.

Hiermee besluiten we onze kennismaking met MySQL en gaan we verder met samenvatten.

1.6. Samenvatting

Dit hoofdstuk behandelt de MySQL DBMS en de grafische hulpprogramma's MySQL Administrator en MySQL Query Browser. Je hebt de nogal gecompliceerde procedure voor het installeren en configureren van de MySQL-server onder de knie, geleerd hoe je de server moet beheren en ermee verbinding kunt maken. Ook heb je geleerd hoe een relationele database werkt en hoe je je eigen database kunt ontwerpen.

De volgende stap is dus het bouwen van een database in MySQL. Het tweede hoofdstuk is hieraan gewijd. Het laat u zien hoe u tabellen kunt maken, er informatie in kunt invoeren en de informatie kunt vinden die u nodig hebt in de database.

Hoofdstuk 2
Databasebeheer met SQL

In dit hoofdstuk leert u hoe u met gegevens in MySQL werkt, hoe u de structuur definieert en hoe u gegevens toevoegt, wijzigt en verwijdert. Deze bewerkingen worden uitgevoerd door SQL, de universele gestructureerde querytaal die de standaardmethode is voor toegang tot relationele databases.

U kunt elk van de vele MySQL-serverclienttoepassingen gebruiken om SQL-opdrachten uit te voeren. Dit hoofdstuk behandelt geen toepassingen van derden. U maakt alleen kennis met de toepassingen die door MySQL AB zijn gemaakt: het mysql-opdrachtregelhulpprogramma en het grafische hulpprogramma MySQL Query Browser.

Alle gegevensbewerkingen zijn beschikbaar in beide hulpprogramma's. Het is handig om met de database in MySQL Query Browser te werken: de componenten worden duidelijk weergegeven, u kunt de gegevens direct bewerken (zonder het SQL UPDATE-statement te gebruiken), werken met query's, bijvoorbeeld, ze bouwen met een speciale tool (terwijl de namen van tabellen en kolommen hoeven niet handmatig te worden ingevoerd), query's opslaan in een bestand, queryresultaten exporteren en nog veel meer. U kunt meer te weten komen over alle functies van de MySQL Query Browser door de documentatie in het Russisch te raadplegen, die u kunt vinden op http://dev.mysql.com/doc/query-browser/ru/index.html.

Eerst leert u hoe u SQL-opdrachten uitvoert in de MySQL Query-browser en op de opdrachtregel, en in het volgende wordt alleen de syntaxis van SQL-opdrachten behandeld.

2.1. SQL-opdrachten uitvoeren

Voordat u de SQL-opdrachten uitvoert, moet u verbinding maken met een draaiende MySQL-server (zie hoofdstuk 1 hoe u dit doet). In dit gedeelte leert u hoe u SQL-opdrachten maakt en deze voor uitvoering aan de server doorgeeft.

Als u de opdrachtregel gebruikt, voert u, om de SQL-opdracht uit te voeren, de tekst ervan in het opdrachtregelvenster in en drukt u op Enter om de opdracht naar de server te verzenden. Om problemen met de codering van Russischtalige gegevens te voorkomen, voert u de opdracht uit voordat u met de gegevens begint te werken:

NAMEN INSTELLEN cp866;

U kunt het resultaat van deze opdracht zien in Fig. 2.1.

Rijst. 2.1. De codering instellen op de opdrachtregel


De opdracht SET NAMES moet worden herhaald wanneer: elk verbinding maken met de server via de opdrachtregel. Deze opdracht vertelt de server dat de gegeven clienttoepassing (mysql-hulpprogramma) de CP-866-codering gebruikt (dit is de Windows-opdrachtregelcodering), en de server zal automatisch coderingsconversies uitvoeren bij communicatie met de clienttoepassing.

Nadat u de codering hebt gewijzigd, kunt u alle SQL-opdrachten op de opdrachtregel invoeren. Het bericht over het resultaat van de uitvoering van de opdracht, evenals de gevraagde gegevens worden direct in het opdrachtregelvenster weergegeven (Fig. 2.2).

Rijst. 2.2. Een SQL-query uitvoeren op de opdrachtregel


Met het hulpprogramma mysql kunt u ook meerregelige opdrachten invoeren (in figuur 2.3 is dit hoe de opdracht SHOW DATABASES wordt ingevoerd). Als er geen puntkomma is ingevoerd - een teken van het einde van de opdracht, en wanneer u op de Enter-toets drukt, verzendt het hulpprogramma de opdracht niet naar de server, maar biedt het aan om door te gaan met het invoeren van de opdracht. Als u een meerregelig commando wilt annuleren, typt u \ c (Figuur 2.3).

Rijst. 2.3. Opdracht met meerdere regels


Als u MySQL Query Browser gebruikt, hoeft u de codering niet in te stellen - dit programma werkt in UTF-8-codering en rapporteert dit aan de server zelf. De MySQL Query Browser heeft echter een probleem met het weergeven van Russische letters in het querygebied (het gebied waar de tekst van SQL-commando's wordt ingevoerd, Fig. 2.4). Om dit probleem op te lossen, moet u het lettertype dat in het querygebied wordt gebruikt, wijzigen (hoe u dit doet, werd aan het einde van het vorige hoofdstuk beschreven). Het volstaat om het lettertype één keer te wijzigen.

Rijst. 2.4. SQL-query uitvoeren in MySQL Query Browser


In het Query-gebied kunt u meerdere SQL-commando's tegelijk invoeren, zoals weergegeven in Fig. 2.4. Het huidige commando (de cursor staat op een van zijn regels) wordt gemarkeerd met een witte achtergrond, de rest van de commando's wordt weergegeven op een lichtgrijze achtergrond. Om de huidige opdracht uit te voeren, kunt u op de knop Uitvoeren rechts van het querygebied drukken, of op de toetsencombinatie Ctrl + Enter. Nadat de opdracht is uitgevoerd, worden de gevraagde gegevens weergegeven in het resultatengebied, en een bericht over het resultaat van de opdracht wordt onder aan dit gebied weergegeven.

Nu u hebt geleerd hoe u SQL-opdrachten invoert, gaan we beginnen met het manipuleren van gegevens met behulp van deze opdrachten. Allereerst zullen we kijken naar de opdrachten die zijn ontworpen om met de database als geheel te werken.

2.2. Database maken

In deze sectie leert u hoe u een database kunt maken en neerzetten, de standaardcodering ervoor kunt wijzigen, de huidige database kunt selecteren en een lijst kunt bekijken van alle databases op een bepaalde MySQL-server.

Om een ​​database aan te maken, voer je de opdracht uit:

MAAK DATABASE<Имя базы данных>;

Bijvoorbeeld het commando

MAAK DATABASE Verkoopafdeling;

creëert een database met de naam SalesDept.

Als u om de een of andere reden de standaardcodering voor een nieuwe database moet instellen, anders dan de codering die is opgegeven bij het instellen van MySQL, kunt u bij het maken van de database de gewenste codering (tekenset) en/of de regel voor vergelijken (sorteren ) tekenwaarden:

MAAK DATABASE<Имя базы данных>

KARAKTERSET<Имя кодировки>

VERZAMELEN<Имя правила сравнения>;

Als u bijvoorbeeld gegevens gaat importeren in een nieuwe database die in de CP-1251-codering is, dan zullen we deze codering op deze manier aangeven bij het maken van de database:

MAAK DATABASE Verkoopafdeling

KARAKTERSET cp1251 VERZAMELEN cp1251_general_ci;

Het advies

Om de lijst met coderingen die in MySQL worden gebruikt te bekijken, voert u de opdracht SHOW CHARACTER SET uit; en om een ​​lijst met regels voor het vergelijken van tekenwaarden te zien, gebruikt u de opdracht SHOW COLLATION;. In dit geval kunt u de operator LIKE gebruiken: om bijvoorbeeld alle vergelijkingsregels voor de CP-1251-codering te zien, voert u de opdracht SHOW COLLATION LIKE% 1251%; uit. De uitgang "_ci" (hoofdlettergevoelig) in de namen van vergelijkingsregels betekent dat de vergelijking en sortering niet hoofdlettergevoelig zijn, de uitgang "_cs" (hoofdlettergevoelig) is hoofdlettergevoelig, het einde is "_bin" (binair) - vergelijking en sorteren worden uitgevoerd door numerieke tekencodes. Voor de meeste sorteerregels kunt u een beschrijving (dat wil zeggen de volgorde van de tekens volgens welke tekstwaarden worden geordend) vinden op http://www.collation-charts.org/mysql60/.

De codering die is opgegeven bij het maken van een database wordt standaard gebruikt voor tabellen in deze database, maar u kunt een andere codering opgeven.

U kunt de codering en / of de regel voor het vergelijken van tekenwaarden voor de database wijzigen met behulp van de opdracht

DATABASE WIJZIGEN<Имя базы данных>

KARAKTERSET<Имя кодировки>

VERZAMELEN<Имя правила сравнения>;

In dit geval blijft de codering die wordt gebruikt in de bestaande databasetabellen hetzelfde; alleen de standaardcodering voor nieuw gemaakte tabellen wordt gewijzigd.

Om een ​​onnodige of per ongeluk aangemaakte database te verwijderen, voert u de opdracht uit:

DROP DATABASE<Имя базы данных>;

Aandacht!

Het verwijderen van een database is een zeer kritieke operatie, omdat het leidt tot het verwijderen van alle tabellen in die database en de gegevens die in de tabellen zijn opgeslagen. Het wordt aanbevolen om een ​​back-up van de database te maken voordat u deze verwijdert.

U kunt een van de databases die op deze MySQL-server zijn gemaakt, selecteren als de huidige database met behulp van de opdracht

GEBRUIK MAKEN VAN<Имя базы данных>;

Bijvoorbeeld,:

GEBRUIK Verkoopafdeling;

Daarna kunt u bewerkingen uitvoeren op de tabellen van deze database zonder de databasenaam vooraf te laten gaan aan de tabelnaam. Als u bijvoorbeeld naar de tabel Klanten in de database van SalesDept wilt verwijzen, kunt u eenvoudig Customers schrijven in plaats van SalesDept.Customers. Door de huidige database op te geven, kunt u verwijzen naar tabellen van andere databases, maar het gebruik van de databasenaam als voorvoegsel is verplicht. De selectie van de huidige database blijft bestaan ​​tot het moment dat u de verbinding met de server verbreekt of totdat u een andere huidige database selecteert.

Om een ​​lijst te zien van alle databases die op een bepaalde MySQL-server bestaan, voer je de opdracht uit:

TOON DATABANKEN;

Zelfs als u nog geen databases heeft aangemaakt, ziet u drie systeemdatabases in de resulterende lijst.

INFORMATION_SCHEMA is een informatiedatabase waaruit u informatie kunt halen over alle andere databases, over de datastructuur daarin en over allerlei objecten: tabellen, kolommen, primaire en externe sleutels, toegangsrechten, opgeslagen procedures, coderingen, enz. Deze database is alleen-lezen beschikbaar en is virtueel, dat wil zeggen, het wordt niet opgeslagen als een map op schijf: alle informatie die uit deze database wordt gevraagd, wordt dynamisch geleverd door de MySQL-server.

Mysql is een servicedatabase die wordt gebruikt door de MySQL-server. Het slaat informatie op over geregistreerde gebruikers en hun toegangsrechten, referentie-informatie, enz.

Test is een lege database die kan worden gebruikt voor "pentesten" of eenvoudig kan worden verwijderd.

U hebt dus de basisbewerkingen onder de knie die op de database als geheel worden uitgevoerd: CREATE DATABASE (creëren), ALTER DATABASE (wijzigen), DROP DATABASE (verwijderen), USE (selecteren de huidige database) en SHOW DATABASES (bekijk een lijst met databases ) ... Vervolgens kijken we naar tabelbewerkingen. In dit geval gaan we ervan uit dat u een willekeurige database als de huidige hebt geselecteerd en met de tabellen werkt.

2.3. Werken met tabellen

In deze sectie leert u hoe u een tabel kunt maken, wijzigen en verwijderen, hoe u informatie erover kunt bekijken en een lijst met alle tabellen in de huidige database. Laten we beginnen met de meest complexe opdracht: een tabel maken.

Een tabel maken

Om een ​​tabel te maken, voer je de opdracht uit die wordt getoond in Listing 2.1.

Lijst 2.1. Opdracht tabel maken

MAAK TAFEL<Имя таблицы>

(<Имя столбца 1> <Тип столбца 1> [<Свойства столбца 1>],

<Имя столбца 2> <Тип столбца 2> [<Свойства столбца 2>],

[<Информация о ключевых столбцах и индексах>])

[<Опциональные свойства таблицы>];


Zoals je kunt zien, kan de opdracht om een ​​tabel te maken veel parameters bevatten, maar veel daarvan zijn optioneel (in Listing 2.1 staan ​​deze parameters tussen vierkante haken). Om een ​​tabel te maken, hoeft u alleen maar de naam op te geven, evenals de namen en typen van alle kolommen; de rest van de parameters worden indien nodig gebruikt.

Laten we eerst een paar voorbeelden bekijken die u zullen helpen het CREATE TABLE-commando onder de knie te krijgen en onmiddellijk, zonder de vele parameters ervan te leren, beginnen met het maken van uw eigen (eenvoudig van structuur) tabellen.

Stel dat we de database bouwen die we in hoofdstuk 1 hebben ontworpen. Met behulp van de opdrachten in de vorige sectie hebben we een lege SalesDept-database gemaakt en deze als de huidige database geselecteerd. Laten we nu drie tabellen maken: Klanten, Producten en Bestellingen. Listing 2.2 toont de opdracht om de tabel Klanten te maken.

Lijst 2.2. Opdracht voor het maken van tabellen voor klanten

MAAK TAFEL Klanten

(ID SERIEEL,

naam VARCHAR (100),

telefoon VARCHAR (20),

adres VARCHAR (150),

beoordeling INT,

PRIMAIRE SLEUTEL (ID))


Dit commando gebruikte parameters: ten eerste de naam van de tabel en ten tweede de namen en typen kolommen waaruit de tabel zal bestaan ​​(zie ook Tabel 1.1 in Hoofdstuk 1).

Id - record-ID. U heeft aan deze kolom het type SERIEEL toegewezen, waarmee u de rijen in de tabel automatisch kunt nummeren. Het trefwoord SERIAL staat voor BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. Dit betekent dat u grote positieve (BIGINT) positieve (UNSIGNED) getallen in een kolom kunt invoeren, terwijl u automatisch controleert of er geen ongedefinieerde of dubbele waarden zijn (NIET NULL UNIEK). Als u bij het toevoegen van een rij aan de tabel geen waarde opgeeft voor deze kolom, dan zal het MySQL-programma het volgende volgnummer (AUTO_INCREMENT) in deze kolom invoeren.

Opmerking

NULL is een constante die geen waarde aangeeft. Als een kolom een ​​NULL-waarde bevat, wordt aangenomen dat er geen specifieke waarde voor die kolom is ingesteld (daarom noemen we NULL ook een ongedefinieerde waarde). NULL moet niet worden verward met de lege string ("") of het getal 0. NULL-waarden worden op een speciale manier behandeld: de meeste functies en operators retourneren NULL als een van de argumenten NULL is. Het vergelijkingsresultaat 1 = 1 is bijvoorbeeld een echte waarde (TRUE), en het resultaat van de vergelijking NULL = NULL is een null-waarde (NULL), dat wil zeggen dat twee null-waarden niet als gelijk worden beschouwd.

Nam is de naam van de klant, telefoon is het telefoonnummer en adres is het adres. U hebt deze kolommen ingesteld op VARCHAR omdat ze tekenwaarden zullen bevatten. De haakjes geven het maximale aantal tekens aan dat in de kolomwaarde is toegestaan.

Ten derde hebt u gespecificeerd dat de id-kolom de primaire sleutel van de tabel zou zijn door de PRIMARY KEY (id)-definitie op te nemen in de opdracht om de tabel te maken.

Ten vierde hebt u twee optionele parameters voor deze tabel opgegeven. De parameter ENGINE bepaalt het type tabel. U hebt de tabel Klanten het type InnoDB toegewezen, omdat alleen dit type zorgt voor het behoud van de integriteit van de relaties tussen de tabellen (voor meer details over tabeltypen, zie de sectie "Optionele tabeleigenschappen"). De parameter CHARACTER SET definieert de standaardcodering voor de gegevens in de tabel. Omdat u geen codering voor de naam-, telefoon- en adreskolommen afzonderlijk hebt opgegeven, worden de gegevens in deze kolommen opgeslagen in UTF-8, de standaardcodering voor de tabel Klanten.

Het volgende voorbeeld dat we zullen bekijken, is de opdracht om de tabel Producten te maken, weergegeven in Listing 2.3.

Lijst 2.3. Opdracht voor het maken van productentabel:

MAAK TAFEL Producten

(ID SERIEEL,

omschrijving VARCHAR (100),

details TEKST,

prijs DECIMAAL (8,2),

PRIMAIRE SLEUTEL (ID))

MOTOR InnoDB KARAKTER SET utf8;


Deze opdracht lijkt erg op de opdracht voor het maken van de tabel Klanten, behalve de naam van de tabel en de reeks kolommen. De kolommen id (productnummer) en description (productnaam) van de tabel Producten hebben de typen die we al kennen. De kolom details (beschrijving) is van het type TEXT. Het is handig om dit type te gebruiken in plaats van het VARCHAR-type als de kolom lange waarden bevat: de totale lengte van de waarden van alle VARCHAR-kolommen is beperkt tot 65.535 bytes voor elke tabel en er is geen beperking op de totale lengte van de TEXT-kolommen. Het nadeel van het TEXT-type is dat het niet mogelijk is om dergelijke kolommen in de refererende sleutel van de tabel op te nemen, dat wil zeggen dat op basis van deze kolommen een relatie tussen tabellen kan worden gelegd.

De prijskolom is een DECIMALE kolom voor het opslaan van valutabedragen en andere waarden waarvoor het belangrijk is om afrondingsfouten te voorkomen. We hebben twee cijfers tussen haakjes aangegeven: de eerste definieert het maximale aantal cijfers in de kolomwaarde, de tweede - het maximale aantal cijfers na het decimaalteken. Met andere woorden, de prijs van een product kan maximaal zes cijfers bevatten in het gehele deel (6 = 8–2) en maximaal twee cijfers in het fractionele deel.

Een laatste voorbeeld is de opdracht om de tabel Orders te maken, weergegeven in Listing 2.4.

Lijst 2.4. Opdracht voor het maken van tabellen voor bestellingen

MAAK TAFEL Bestellingen

(ID SERIEEL,

datum DATUM,

product_id BIGINT ONGEKEND NIET NULL,

aantal INT ONGEKEND,

bedrag DECIMAAL (10.2),

customer_id BIGINT NIET ONDERTEKEND,

PRIMAIRE SLEUTEL (ID),

BUITENLANDSE SLEUTEL (product_id) REFERENTIES Producten (id)

OP VERWIJDEREN BEPERKEN OP UPDATE CASCADE,

BUITENLANDSE SLEUTEL (klant_id) REFERENTIES Klanten (id)

AAN VERWIJDEREN BEPERKEN OP UPDATE CASCADE)

MOTOR InnoDB KARAKTER SET utf8;


Een bijzonder kenmerk van de tabel Orders is de aanwezigheid van externe sleutels: de kolom product_id (item) bevat de productnummers uit de tabel Producten en de kolom customer_id (klant) bevat de klantnummers uit de tabel Klanten (zie ook Tabel 1.2 in Hoofdstuk 1). Aangezien het product- en klantnummer grote positieve gehele getallen zijn, hebben we de kolommen product_id en customer_id toegewezen om BIGINT UNSIGNED te typen.

Vervolgens vertelden we het MySQL-programma met welke primaire sleutel elke externe sleutel overeenkomt, om automatisch de integriteit van relaties te behouden (we hebben het in hoofdstuk 1 over integriteit gehad). FOREIGN KEY (customer_id) REFERENCES Customers (id) betekent bijvoorbeeld dat de kolom customer_id alleen waarden uit de kolom id van de tabel Klanten kan bevatten en null-waarden (NULL) en andere waarden zijn verboden. Voor de kolom product_id hebben we een vergelijkbare beperking ingesteld en de eigenschap NOT NULL aan deze kolom toegewezen om te voorkomen dat bestellingen met een niet-gedefinieerd product worden geregistreerd. Daarnaast hebben we de integriteitshandhavingsregels voor elk van de koppelingen gespecificeerd (we hebben ze ook besproken in hoofdstuk 1). De regel ON DELETE RESTRICT houdt in dat u een klantrecord niet kunt verwijderen als die klant een geregistreerde bestelling heeft, en dat u geen productrecord kunt verwijderen als iemand dit product heeft besteld. De ON UPDATE CASCADE-regel houdt in dat wanneer het klantnummer in de tabel Klanten of het artikelnummer in de tabel Producten verandert, de overeenkomstige wijzigingen worden aangebracht in de tabel Bestellingen.

Opmerking

Houd er rekening mee dat we de tabel Orders als laatste hebben gemaakt, omdat de primaire sleutels in de tabellen Klanten en Producten moeten worden gemaakt voordat de externe sleutels die ernaar verwijzen in de tabel Orders. Het zou echter mogelijk zijn tabellen zonder externe sleutels in willekeurige volgorde aan te maken en vervolgens externe sleutels toe te voegen met behulp van het ALTER TABLE-commando, dat we zullen bespreken in de sectie "De tabelstructuur wijzigen".

In onze voorbeelden hebben we slechts enkele parameters van de opdracht overwogen om een ​​tabel te maken. Nu zullen we alle basisparameters opsommen die u mogelijk nodig heeft bij het maken van tabellen. De sectie "Gegevenstypen in MySQL" zal praten over de typen kolommen, in de sectie "Eigenschappen van kolommen" - over het instellen van sleutelkolommen en, ten slotte, sectie "Sleutelkolommen en indexen" - over de optionele eigenschappen van de tabel.

Gegevenstypen in MySQL

Zoals u al weet, moet u bij het maken van een tabel het gegevenstype voor elke kolom opgeven. MySQL biedt veel gegevenstypen voor het opslaan van getallen, datum / tijd en tekenreeksen (teksten). Daarnaast zijn er gegevenstypen voor het opslaan van ruimtelijke objecten die in dit boek niet worden besproken.

Laten we eens kijken naar numerieke gegevenstypen.

BIT [(<Количествобитов>)].

Een bitnummer dat het opgegeven aantal bits bevat. Als er geen aantal bits is opgegeven, bestaat het aantal uit één bit.

Een geheel getal in het bereik van -128 tot 127, of (als de eigenschap UNSIGNED is opgegeven) van 0 tot 255.

BOOL of BOOLEAN.

Zijn synoniemen voor het gegevenstype TINYINT (1) (het getal tussen haakjes is het aantal cijfers dat moet worden weergegeven, zie opmerking hieronder). In dit geval wordt een waarde die niet nul is als waar (TRUE), een waarde van nul - als onwaar (FALSE) beschouwd.

Een geheel getal in het bereik van -32.768 tot 32.767, of (als UNSIGNED is opgegeven) van 0 tot 65.535.

Een geheel getal in het bereik van -8 388 608 tot 8 388 607 of (indien UNSIGNED is opgegeven) 0 tot 16 777 215.

INT of INTEGER.

Een geheel getal in het bereik van -2 147 483 648 tot 2 147 483 647, of (indien UNSIGNED is opgegeven) van 0 tot 4 294 967 295.

Een geheel getal in het bereik van -9 223 372 036 854 775 808 tot 9 223 372 036 854 775 807, of (indien NIET-ONDERTEKEND is opgegeven) van 0 tot 18 446 744 073 70 9 551 615.

Synoniem voor BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE (unsigned large integer dat automatisch unieke waarden verhoogt; NULL-waarden zijn niet toegestaan). Wordt gebruikt om automatisch unieke waarden te genereren in een primaire sleutelkolom. Zie deze subsectie voor UNSIGNED- en AUTO_INCREMENT-eigenschappen en Kolomeigenschappen voor NOT NULL- en UNIQUE-eigenschappen.

Opmerking

Voor alle gegevenstypen met gehele getallen, behalve BOOL (BOOLEAN) en SERIAL, kunt u het aantal weergegeven cijfers tussen haakjes specificeren, dat wordt gebruikt in combinatie met de ZEROFILL-parameter: als het nummer minder cijfers bevat, wordt het opgevuld met nullen op de links wanneer weergegeven. Als een tabelkolom bijvoorbeeld is gedefinieerd als INT (5) ZEROFILL, dan worden de waarden "1234567" en "12345" weergegeven zoals ze zijn en wordt de waarde "123" weergegeven als "00123". Voor het gegevenstype BIT wordt de grootte van het getal tussen haakjes aangegeven, dat wil zeggen het maximale aantal opgeslagen bits.

MySQL-databaseserver wordt heel vaak gebruikt om dynamische weboplossingen te creëren. Een van de redenen (en misschien een gevolg) is dat bijna alle hosters in tariefplannen op het UNIX-platform één of meerdere MySQL-databases aanbieden. Als u virtuele hosting gebruikt, hoeft u bijna geen serverbeheer te bestuderen, u hoeft alleen uw programma's te implementeren door een interface te volgen die de door u gekozen programmeertaal ondersteunt (PHP heeft een ingebouwde interface voor communicatie met de database; in versie 5.0, MySQL-ondersteuning is verplaatst naar een aparte bibliotheek vanwege licentieoverwegingen). Alle andere administratieve zaken - starten, stoppen, herstarten, rechten en gebruikers beheren, back-up en configuratie van de server - worden uitgevoerd door de beheerders van de hostingprovider. Maar in het geval van het installeren van uw eigen server of VDS (Virtual Dedicated Server), zult u zelf voor alle nuances van zijn werk moeten zorgen.

Het configureren van de MySQL-server kan op twee manieren: door opties in te stellen op de opdrachtregel bij het starten van de server en via het my.ini-configuratiebestand. U moet ook onderscheid maken tussen optionele parameters die kunnen worden ingesteld voor de huidige sessie van de server en verloren gaan bij opnieuw opstarten, en omgevingsvariabelen die globaal werken voor de hele server en alle databases - u kunt ze alleen wijzigen door direct nieuwe waarden op te geven.

U kunt een lijst krijgen van alle beschikbare opdrachten en opties door "mysqld --help" in de console te typen. Het moet gezegd dat bijna alle commando's universeel zijn en worden ondersteund op alle platforms waarop de MySQL-server draait, maar er zijn verschillende specifieke commando's voor het Windows NT-platform. Voor alle commando's is er een volledige syntaxis, wanneer het commando begint met twee streepjes (min) "-", onmiddellijk gevolgd door de naam van het commando (of opties, hierna zullen deze woorden synoniemen zijn). Als u een waarde moet instellen, wordt de opdrachtnaam gevolgd door het teken "=" en de in te stellen waarde. De verkorte vorm voorziet in één streepje, de naam van de opdracht wordt afgekort tot één letter en de parameters worden gespecificeerd met een spatie. Alleen de optie "--socket" heeft geen korte vorm (het zou "-s" moeten zijn). Onthoud dat het schrijven van commando's hoofdlettergevoelig is en dat de commando's "-l" en "-L" totaal verschillend zijn. U kunt opmerkingen opgeven in het configuratiebestand - ze worden gescheiden door het "#"-teken en de hele regel wordt tot het einde genegeerd.


Laten we eerst eens kijken naar de belangrijkste commando's.

Het --help commando is het belangrijkste, het geeft een lijst van alle beschikbare commando's

Hulp of -? (in servers van versie 4.1 en hoger is er geen korte opdracht "-h"; bovendien moet u, om de opdracht uit te voeren, eerst de opdracht "--verbose" specificeren - geeft hulp weer over beschikbare opdrachten en opties, de server zelf start niet.
--version of -V - handig als u de exacte versie van de MySQL-server en het platform waarop deze draait, wilt weten.
--user = of -u - specificeert de gebruikersnaam waaronder de server start. Het wordt over het algemeen niet aanbevolen om de server als root uit te voeren. Voorbeeld: "--user = vasya".
-p - Wordt gebruikt in combinatie met de opdracht "-u" om het wachtwoord voor de gebruikersaccount in te stellen. Als er geen wachtwoord is (de standaardinstallatie geeft geen wachtwoord voor de rootgebruiker), kan het commando worden weggelaten. Let op - de syntaxis van de opdracht is anders - het wachtwoord wordt direct na de opdracht in de regel gespecificeerd, zonder scheidingstekens. Voorbeeld: "--user = vasya -pverygoodpassword", waarbij "verygoodpassword" het wachtwoord is voor gebruiker "vasya".
-P of --port = - Specificeert het poortnummer waarmee de verbinding met de mysqld-server tot stand wordt gebracht. Standaard luistert de server op TCP-poort 3306, maar u kunt een andere specificeren. Houd er rekening mee dat de verkorte versie van de opdracht met een hoofdletter P wordt geschreven, aangezien de kleine letter p wordt gebruikt om het wachtwoord van de gebruiker in te stellen.
--bind-address = - wordt gebruikt om het IP-adres van de server in te stellen, standaard wordt het huidige computeradres genomen.
--skip-networking - de opdracht verbiedt volledig het gebruik van netwerkverbindingen om verbinding te maken met de server, u kunt alleen lokaal werken, vanaf de localhost-host.

De volgende groep opdrachten is bedoeld voor het werken met databases.

Berichten in het Russisch weergeven - gebruik --language = russian

Datadir = of -h - hiermee kunt u expliciet de map specificeren waarin de databases zijn opgeslagen. Dit kan nodig zijn als u databases op een andere partitie of logische schijfeenheid wilt opslaan, of als u meerdere servers heeft die verschillende mappen gebruiken voor het opslaan van databases. Het is toegestaan ​​om zowel een volledig pad als een relatief pad op te geven. Voorbeeld: "mysqld --datadir = \ home \ vasya \ bases".
--basedir = of -b - pad naar de map met de geïnstalleerde server.
--tmpdir = of -t is het pad naar de map voor tijdelijke bestanden.
--character-sets-dir =. Met deze optie wordt het pad ingesteld naar een map die configuratiebestanden voor verschillende coderingen bevat. Deze gegevens zijn belangrijk voor het correct sorteren en zoeken in stringvelden van tabellen.
--taal = of -L - hiermee kunt u de taal overschrijven voor het weergeven van berichten en fouten. De standaardtaal is Engels, maar andere worden ook ondersteund, met name Russisch. Om de uitvoertaal in te stellen, moet u de naam in Latijnse letters specificeren (Russisch - voor Russisch, Engels - voor Engels). Om de opdracht te laten werken, moet de directory \ share \ bestaan, maar als het pad ernaartoe verschilt van het standaardpad, moet u in plaats van de taal op te geven het volledige pad naar de directory beschrijven - bijvoorbeeld "--taal = \ gebruiker \ vasya \ mysql \ langv \ russisch".
--default-character-set = - Stelt de standaard tekencodering in. Mogelijke waarden van de charset-parameter zijn: koi8_ru, german1, cp1251, win1251, koi8_ukr, win1251ukr, win1250 en andere - in totaal meer dan 20 verschillende coderingen. Codering is belangrijk als de tabellen teksten in verschillende talen zullen opslaan, en het is belangrijk om rekening te houden met nationale bijzonderheden bij het zoeken en sorteren van gegevens.

Dit waren de belangrijkste opties en commando's die je nodig zou kunnen hebben bij het instellen van je server. Er zijn veel van alle commando's, en voor een volledige studie ervan, gebruik de ingebouwde help (roep via het --help commando).

Sommige opdrachten zijn specifiek en alleen beschikbaar voor Windows NT

Er zijn verschillende opdrachten die specifiek zijn voor het Windows NT-platform.
--console - het commando verscheen in versie 3.22.4 en is ontworpen om alle foutmeldingen naar het consolevenster te sturen, wat handig is bij het debuggen of bestuderen van het effect van verschillende parameters op de werking van de server.
--install - werkt alleen op het Win2000 / XP-platform en registreert de MySQL-server als een systeemservice die begint bij elke opstart van het systeem en permanent in RAM bestaat (als u een service moet registreren, maar de gebruiker zal deze zelf starten , ziet de opdracht eruit als "- -insatll-manual "). De opdracht "--remove" verwijdert de server uit de lijst met systeemservices.
--standalone - start de server onder Win2000 / XP als een afzonderlijk programma, niet als een systeemservice.

Het is het handigst om voor deze acties het grafische hulpprogramma WinMySQLAdmin te gebruiken, dat is inbegrepen in de distributiekit.

Het kan ook worden gebruikt om een ​​rapport te genereren over alle variabelen en parameters waarmee de server wordt gestart, wat handig kan zijn bij het gedetailleerd onderzoeken van de server en het optimaliseren van de prestaties. Met andere grafische hulpprogramma's, zoals MySQL Administrator, kunt u deze gegevens niet alleen bekijken, maar ook wijzigen via een gebruiksvriendelijke interface. Maar in het geval van een externe server of met beperkte middelen, is het het beste om opdrachtregelbesturing te gebruiken. Bovendien neemt de grafische interface niet de noodzaak weg om het doel van de gewijzigde opties te kennen en te begrijpen.

Het mysql-opdrachtregelhulpprogramma is een eenvoudige SQL-shell (met de mogelijkheden van de leesregelbibliotheek van het GNU-project). Het ondersteunt interactieve en niet-interactieve modi. In de interactieve modus worden queryresultaten in ASCII-indeling weergegeven. Bij gebruik in niet-interactieve modus (bijvoorbeeld als filter), wordt het resultaat weergegeven in tekstformaat met een door tabs gescheiden teken (het uitvoerformaat kan worden gewijzigd met behulp van opdrachtregelparameters). De scripts kunnen worden uitgevoerd zoals hieronder wordt weergegeven:

Shell> mysql database output.tab

Als u problemen ondervindt door onvoldoende geheugen op deze client, gebruik dan de --quick optie! Dit dwingt mysql om de functie mysql_use_result () te gebruiken in plaats van de functie mysql_store_result () om de resulterende dataset te krijgen.

Het is heel gemakkelijk om mysql te gebruiken. Start mysql-database of mysql --user = gebruikersnaam --password = uw_wachtwoord database e. Typ de SQL-opdracht direct op de opdrachtregel en sluit deze af met een van de tekens: `;", `\ g" of `\ G", en druk op de Enter-toets ".

Het opdrachtregelprogramma mysql ondersteunt de volgende opties:

Help Toont helpinformatie over het gebruik van het programma en verlaat het. -A, --no-auto-rehash Schakelt automatisch opnieuw hashen uit. rehash moet worden gebruikt om een ​​hash van tabellen en velden te krijgen. Hierdoor start mysql sneller. --prompt = ... Stel de opdrachtprompt in het opgegeven formaat in. -b, --no-beep Schakel de pieptoon uit. -B, --batch Geeft resultaten weer in batchmodus, door tabs gescheiden, elke regel op een nieuwe regel. Het geschiedenisbestand wordt niet gebruikt. --character-sets-dir = ... Directory waar tekensets zich bevinden. -C, --compress Gebruik server-/clientgegevenscompressie. - #, --debug [= ...] Foutopsporingslogboek. De standaardwaarde is "d: t: o, / tmp / mysql.trace". -D, --database = ... De naam van de te gebruiken database. Meestal gebruikt in het configuratiebestand `my.cnf' --Default-character-set = ... Stel de standaard tekenset in. -E, --execute = ... Voer de opdracht uit en sluit het programma af (voer het resultaat uit zoals voor --batch). -E, --vertical Druk queryresultaten (strings) verticaal af. U kunt uitvoer op deze manier uitvoeren zonder deze parameter, en opdrachten eindigen met \ G-tekens. -f, --force Doorgaan met verwerken, zelfs als een SQL er is een fout opgetreden. -g, --no-named-commands Schakel benoemde commando's uit. Gebruik alleen commando's zoals \ * of gebruik benoemde commando's alleen aan het begin van een regel die eindigt op een `;' ... Vanaf versie 10.9 wordt de client gestart met deze optie, inbegrepen standaard! Met de -g optie werken lange commando's echter nog steeds vanaf de eerste regel. -G, --enable-named-commands Schakelt benoemde commando's in. Lange commando's zijn toegestaan, evenals verkorte commando's zoals \ *. -i, --ignore-space Negeer spatie na functienamen. -h, --host = ... Maak verbinding met de database op de opgegeven host. -H, --html Uitvoer HTML-uitvoer. -L, --skip-line-numbers Voeg geen regelnummers toe voor fouten. Handig voor het vergelijken van resulterende bestanden die foutmeldingen bevatten. --no-pager Blokkeert de pager (paging-programma) en drukt het resultaat af naar stdout (op Unix). Zie ook het commando \ h (online help). --no-tee Blokkeert het uitvoerbestand. Zie ook het commando \ h (online help). -n, --unbuffered Spoel de buffer na elk verzoek. -N, --skip-column-names Neem geen kolomnamen op in de resultaten. -O, --set-variabele var = optie Variabelewaarde instellen. De lijst met gebruikte variabelen wordt weergegeven via --help. -o, --one-database Werk alleen de standaarddatabase bij. Hiermee kunt u updates overslaan naar een andere database in het updatelogboek. --pager [= ...] Stel het gegevenstype van de uitvoer in. Standaard is dit de omgevingsvariabele PAGER. Mogelijke waarden zijn minder, meer, cat [> bestandsnaam], etc. Zie ook het commando \ h (online help). Deze optie werkt niet in batchmodus. De pager werkt alleen onder Unix. -p, --password [= ...] Wachtwoord dat wordt gebruikt bij het verbinden met de databaseserver. Als het wachtwoord niet is opgegeven op de opdrachtregel, wordt de gebruiker hierom gevraagd. Laat bij gebruik van de korte vorm -p geen spatie tussen de parameter en de wachtwoordwaarde. -P --port = ... Het TCP / IP-poortnummer dat voor de verbinding wordt gebruikt. -q, --quick Het resultaat niet in de cache plaatsen. Voer het regel voor regel uit zoals het van de server komt. Dit kan de serversnelheid vertragen als de uitvoer wordt onderbroken. Het geschiedenisbestand wordt niet gebruikt. -r, --raw Toon kolomwaarden zonder enige conversie. Gebruikt met --batch. -s, --stille Stilte modus. Voer alleen foutmeldingen uit. -S --socket = ... Socketbestand om te gebruiken voor verbinding. -t --table Druk het resultaat af in tabelvorm. Dit is de standaardinstelling voor de niet-batchmodus. -T, --debug-info Druk enkele foutopsporingsgegevens af bij het afsluiten van het programma. --tee = ... Voeg iets toe aan het uitvoerbestand. Zie ook het commando \ h (online help). Deze parameter werkt niet in batchmodus. -u, --user = # MySQL-gebruikersnaam als deze gebruiker momenteel niet actief is. -U, --safe-updates [= #], --i-am-a-dummy [= #] Staat alleen UPDATE- en DELETE-bewerkingen toe met behulp van toetsen. Hieronder vindt u meer informatie over deze parameter. U kunt deze optie resetten door --safe-updates = 0 in te stellen in het configuratiebestand `my.cnf'. -V, --verbose Meer geavanceerde uitvoermodus (-v -v -v geeft het uitvoerformaat van de tabel). -V , --version Geef versie-informatie weer en sluit het programma af.-w, --wait Als de verbinding met de server is verbroken, wacht dan en probeer deze te herstellen in plaats van het werk te onderbreken.

De volgende variabelen kunnen ook worden ingesteld met behulp van de opdrachtregelopties -O of --set-variable:

Als u help typt op de opdrachtregel, geeft mysql een lijst weer met de opdrachten die het ondersteunt:

Mysql> help MySQL Commando's help (\ h) Geeft de gegeven tekst weer. ? (\ h) Synoniem voor hulp. clear (\ c) Het clear commando. verbinden (\ r) Maak opnieuw verbinding met de server. Aanvullende argumenten zijn db en host. edit (\ e) Bewerk het huidige commando met $ EDITOR. ego (\ G) Stuur het huidige MySQL-commando naar de server en geef het resultaat verticaal weer. exit (\ q) Sluit het programma af. Hetzelfde als stoppen. go (\ g) Stuur het huidige MySQL-commando naar de server. nopager (\ n) Blokkeer pager, output naar stdout. noteee (\ t) Voeg geen items toe aan het uitvoerbestand. pager (\ P) Installeer PAGER. Voer queryresultaten uit via PAGER. print (\ p) Druk de huidige opdracht af. prompt (\ R) Wijzig het formaat van de mysql-opdrachtprompt. quit (\ q) Sluit het programma af. rehash (\ #) Herbouw hashtabel. source (\.) Voer het bestand uit met het SQL-script voor uitvoering. Geef bestandsnaam op als argument. status (\ s) Krijg informatie over de serverstatus. tee (\ T) Stel de outfile-parameter in. Voeg iets toe aan het opgegeven uitvoerbestand. gebruik (\ u) Gebruik een andere database. Geef de naam van de database op als argument.

Het pager-commando werkt alleen onder Unix.

Het resultaat hiervan is als volgt:

  • Het is niet toegestaan ​​om UPDATE- of DELETE-opdrachten uit te voeren, tenzij de sleutelbeperkingen zijn gespecificeerd in de WHERE-clausule. U kunt echter de UPDATE / DELETE-commando's forceren met behulp van de LIMIT-instructie: UPDATE table_name SET not_key_column = # WHERE not_key_column = # LIMIT 1;
  • Alle resultaten die te groot zijn, zijn beperkt tot # select_limit # regels.
  • SELECT s die mogelijk meer dan # max_join_size # rijcombinaties nodig hebben om uit te voeren, worden afgebroken.

Enkele handige tips voor het gebruik van de mysql-client:

Sommige gegevens zijn beter leesbaar wanneer ze verticaal worden weergegeven in plaats van het veelgebruikte horizontale uitvoervenster. Tekst die bijvoorbeeld langer is dan breed en veel nieuwe regels bevat, is verticaal vaak veel gemakkelijker te lezen.

Mysql> SELECT * UIT mails WAAR LENGTE (txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith schrijft: Thimble> Hallo. Ik denk dat dit een goed idee is. Is er iemand bekend met UTF-8 Thimble> of Unicode? Anders zal ik dit op mijn TODO-lijst zetten en kijken wat Thimble> gebeurt. Ja, doe dat alstublieft. Groeten, Monty-bestand: inbox-jani-1 hash: 190402944 1 rij in set (0.09 sec)

  • U kunt de opties van het tee-commando gebruiken om in te loggen. Het kan worden gestart met de --tee = ... optie voor mysql, of interactief vanaf de opdrachtregel door tee te typen. Alle gegevens die op het scherm worden weergegeven, worden ook toegevoegd aan het opgegeven bestand. Dit kan erg handig zijn voor het opsporen van fouten. Het tee-hulpprogramma kan vanaf de opdrachtregel worden geblokkeerd met de opdracht notee. Als u het tee-commando opnieuw uitvoert, wordt logboekregistratie opnieuw ingeschakeld. Als deze optie niet is opgegeven voor het tee-commando, wordt het vorige bestand gebruikt. Merk op dat de tee-opdracht de resultaten naar een bestand schrijft na elke opdracht die wordt uitgevoerd, net voordat de opdrachtregel voor de volgende opdracht verschijnt.
  • Met de optie --pager [= ...] werd het mogelijk om interactief resultaten te bekijken of te zoeken met Unix-programma's minder, meer of vergelijkbaar. Als u niet expliciet een argument voor deze parameter opgeeft, zoekt de mysql-client naar de omgevingsvariabele PAGER en stelt de waarde in op pager. Pager kan ook worden gestart vanaf de interactieve opdrachtregel met pager en gestopt met nopager. De opdracht kan een optioneel argument hebben; pager wordt ingesteld op de waarde van dit argument. Het pager-commando kan worden aangeroepen zonder een argument, maar hiervoor is de --pager-optie of de juiste standaardinstelling voor stdout vereist. Het pager-commando werkt alleen op Unix omdat het de functie popen () gebruikt die niet beschikbaar is in Windows. De tee-optie kan in plaats daarvan worden gebruikt op Windows, hoewel dit in sommige situaties minder handig is dan het gebruik van het pager-commando.
  • Een paar tips over het pager-commando: Het kan worden gebruikt om naar een bestand te schrijven: mysql> pager cat> /tmp/log.txt en de resultaten worden alleen naar een bestand verzonden. Programma's die worden aangeroepen door het pager-commando kunnen alle geldige opties accepteren: mysql> pager less -n -i -S Besteed speciale aandacht aan de -S optie in het bovenstaande voorbeeld. Het kan erg handig zijn bij het bekijken van de resultaten. Probeer het met horizontale uitvoer (eindig commando's met "\ g", of ";") en verticaal (aan het einde van commando's - "\ G"). Zeer omslachtige uitvoerresultaten zijn soms moeilijk van het scherm af te lezen, in dit geval kunt u met het minder-commando met de -S-optie de resultaten interactief van links naar rechts bekijken, terwijl wanneer lijnen met een lengte langer dan de schermbreedte verschijnen, hun output zal doorgaan op een nieuwe regel ... Gegevensuitvoer is in dergelijke gevallen beter leesbaar. Wanneer u het less-commando interactief aanroept met de "-S"-optie, kunt u de werkingsmodus (aan / uit) schakelen vanaf de opdrachtregel. Zie de opdracht "h" voor meer informatie over minder.
  • Tot slot merken we op (als je het nog niet uit de vorige voorbeelden hebt begrepen) dat het mogelijk is om zeer complexe methoden voor het verwerken van de resultaten te combineren. In het volgende voorbeeld worden de resultaten dus verzonden naar twee verschillende mappen die op twee verschillende harde schijven in / dr1 en / dr2 zijn gemonteerd, en toch kunnen de resultaten op het scherm worden bekeken met het commando less: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | minder -n -i -S
  • De bovenstaande functies kunnen ook worden gecombineerd: door tee uit te voeren en pager op minder in te stellen, kunt u de resultaten met het Unix-commando minder bekijken en tegelijkertijd naar een bestand schrijven. Het verschil tussen het Unix-pager tee-hulpprogramma en het ingebouwde tee-commando van de mysql-client is dat het ingebouwde tee-commando werkt, zelfs als tee niet beschikbaar is op Unix. De ingebouwde tee registreert ook alles wat op het scherm wordt afgedrukt, terwijl het Unix tee-hulpprogramma dat wordt gebruikt met pager dit niet genoeg doet. Last but not least, het interactieve tee-commando is handiger voor het in- en uitschakelen van modi als u deze functie soms moet uitschakelen terwijl u naar een bestand schrijft.

U kunt het promptformaat wijzigen op de opdrachtregel van de mysql-client.

De volgende uitnodigingsopties zijn beschikbaar:

Optie Beschrijving
\ vmysqld-versie
\ NSde naam van de database die wordt gebruikt
\ Hhostnaam om verbinding mee te maken
\ Ppoortnummer waarmee de verbinding tot stand is gebracht
\ ugebruikersnaam
\ Uvolledig adres [e-mail beveiligd]
\\ backslash `\"
\ Nnieuwe regel karakter
\ ttabel
\ ruimte
\_ onderstreping spatie
\ Rmilitaire tijdzone (0-23)
\ Rtijd volgens standaard tijdzone (1-12)
\ mminuten
\ ytwee categorieën van het jaar
\ Javier categorieën van het jaar
\ NSvolledige datumnotatie
\ sseconden
\ metdag van de week in drieletterformaat (ma, di, ...)
\ PTijd voor de middag / middag (am / pm)
\ omaand in numeriek formaat
\ Omaand in drieletterformaat (jan, feb, ...)
\ CTeller die het aantal ingevoerde commando's telt

Het teken `\' gevolgd door een andere letter is een aanvulling op die letter.

U kunt op de volgende manieren uitnodigingsopties instellen:

In omgevingsvariabelen U kunt de omgevingsvariabele MYSQL_PS1 instellen voor de promptstring. Bijvoorbeeld: shell> export MYSQL_PS1 = "(\ [e-mail beveiligd]\ h) [\ d]> " `mijn.cnf' `.mijn.cnf" U kunt de promptoptie instellen in elk MySQL-configuratiebestand in de mysql-groep. Bijvoorbeeld: prompt = (\ [e-mail beveiligd]\ h) [\ d]> \ _ Op de opdrachtregel U kunt de optie --prompt instellen vanaf de opdrachtregel van het mysql-hulpprogramma. Bijvoorbeeld: shell> mysql --prompt = "(\ [e-mail beveiligd]\ h) [\ d]> "( [e-mail beveiligd]) > Interactief U kunt ook de opdracht prompt (of \R) gebruiken om de promptinstellingen online te wijzigen. Bijvoorbeeld: mysql> prompt (\ [e-mail beveiligd]\ h) [\ d]> \ _ PROMPT ingesteld op "(\ [e-mail beveiligd]\ h) [\ d]> \ _ "( [e-mail beveiligd]) > ([e-mail beveiligd])> prompt Terugkeren naar de oorspronkelijke (standaard) PROMPT-instellingen in het hulpprogramma mysql> mysql>

Installatie en beheer van de MySQL-server.

MySQL voor de eerste keer installeren en starten.

Installatie.

Het installeren van MySQL is vrij eenvoudig. Eerst moet je de broncode downloaden en uitpakken (omdat ik denk dat je het niet moet schrijven). Je kunt ze vinden op de MySQL-website in de sectie - voor elke smaak en voor elk besturingssysteem, sinds MySQL werkt op bijna alle platforms.

Als je op een Unix-platform werkt (in het bijzonder zal ik voorbeelden geven voor Linux, die iets anders zijn voor andere Unix-platforms), moet je deze stappen volgen:

shell> gunzip mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts / mysql_install_db shell> bin / safe_mysqld &

U moet de bronnen uitpakken in de / usr / local directory, aangezien deze directory is gespecificeerd in de configuratiescripts en het maken van een symbolische link voor de mysql directory is gedaan, omdat deze directory is gespecificeerd in dezelfde scripts. U moet de mysql_install_db bewerken en safe_mysqld-scripts voor uw systeem, zodat ze kunnen werken, in het bijzonder het pad voor het specificeren van de locatie van mysqld en databases. Om de mysqld-daemon te starten, moet je naar de map /usr /local /mysql /bin gaan en het script safe_mysql op de achtergrond uitvoeren. Als je geen berichten hebt ontvangen, is dit goed, alles is goed gegaan. Als een foutmelding verschijnt, betekent dit dat er iets mis is met scripts. U kunt de mysql-server configureren om te starten tijdens het opstarten. Om dit te doen, plaatst u het begin van safe_mysql in een van de systeeminitialisatiebestanden (ze verschillen afhankelijk van de Linux-versie). Voeg voor Linux Slakware toe aan het bestand /etc/rc.d/rc.local:

/ usr / lokaal / mysql / bin / safe_mysqld &

Wat betreft Windows, waar ik een fan van ben, hier verloopt de installatie bijna zonder problemen. Je pakt het zip-archief uit, voert het exe-bestand uit en dan werkt alles vanzelf. Het wordt meestal geïnstalleerd in de c: mysql-directory. Op Windows NT wordt MySQL als een service geïnstalleerd en kunt u de opstartmethode specificeren - handmatig of automatisch (Start-Instellingen-Configuratiescherm-Services-MySQL-Opstarten).

MySQL starten.

De server wordt meestal bestuurd vanaf de opdrachtregel.Ik schreef al over Linux, en open op Windows 95/98 een DOS-sessie en voer de volgende opdrachten uit:

cd mysqlbin mysqlbin> mysqld --standalone

Deze opdracht start de mysql-daemon op de achtergrond. Windows 95/98 staat niet toe dat mysqld als een service wordt gestart. Geen berichten is een goed teken, dan is alles in orde.

Bij het starten van mysqld kunt u de volgende opties opgeven:

- ?, --helpenverwijzing
-b, --basedir =Het pad naar de map waar mysql is geïnstalleerd
-h, --datadirHet pad naar de map waar de databases zijn opgeslagen.
-l, --log =Naam transactielog
-L, --taal =De standaardtaal (meestal Engels).
-P, --poort =Poort voor verbinding.
--skip-grant-tabellenNegeer subsidietabellen. Dit geeft iedereen VOLLEDIGE toegang tot alle tabellen. Geef normale gebruikers geen toestemming om mysqld uit te voeren.
--naam-oplossen overslaanHiermee kunt u alleen toegang verlenen aan die hosts waarvan de IP-adressen in de privilegetabellen worden vermeld.Gebruikt voor een hoger beschermingsniveau.
--skip-netwerkenGebruik alleen verbindingen via de localhost-interface.
-V, --versieVersie-informatie weergeven.

Nu kunt u proberen in te loggen op de server met behulp van het mysql-commando In eerste instantie is er slechts één gebruiker die inlogrecht krijgt - wortel die geen wachtwoord heeft. Het eerste dat u moet doen, is inloggen als root en er een wachtwoord voor instellen. De opdracht mysql kan de volgende opties gebruiken:

Opmerking. De opdrachten mysqld en mysql hebben nog een paar opties, maar die zijn op dit moment niet van bijzonder belang.

Nadat je het root-wachtwoord hebt ingesteld, moet je de server opnieuw opstarten met mysqladmin reload om de wijzigingen door te voeren, en dan kun je opnieuw proberen in te loggen:

mysqlbinmysql -u root -p mysql Voer wachtwoord in: ******
Als u de mysql-monitorprompt krijgt, werkt alles correct. U kunt beginnen met het instellen van de privilegetabellen, het toevoegen van nieuwe gebruikers, het maken van databases en tabellen, dat wil zeggen, alles doen wat administratie wordt genoemd. Hierover later meer.

Het privilegesysteem en de beveiliging in MySQL.

Mysql-database en subsidietabellen.

U hebt dus met succes de mysql-database ingevoerd, die wordt gebruikt om de server te beheren. Wat is er? En er zijn 5 tabellen die niet verschillen van andere databasetabellen, behalve dat deze tabellen worden gebruikt om toegang te bieden tot de databasegegevens en tabellen erin voor gebruikers. Laten we ze allemaal eens bekijken.

Voer de volgende opdracht in, waarmee de tabellen in de mysql-database worden weergegeven:

mysql> tabellen tonen;
Tables_in_mysql
kolommen_priv
db
gastheer
tabellen_priv
gebruiker

Laten we eens kijken naar de functies van elk van de tabellen:

  • Gebruiker
    Bepaalt of de gebruiker die probeert verbinding te maken met de server dit mag doen. Bevat gebruikersnaam, wachtwoord en privileges. Als u de opdracht invoert kolommen van gebruiker tonen;, dan krijgen we het volgende:
    VeldTypeNulToetsStandaardExtra
    Gastheerchar (60) PRI
    Gebruikerchar (16) PRI
    Wachtwoordchar (8)
    Select_privchar (1) N
    Insert_privchar (1) N
    Update_privchar (1) N
    Delete_privchar (1) N
    Create_privchar (1) N
    Drop_privchar (1) N
    Reload_privchar (1) N
    Shutdown_privchar (1) N
    Process_privchar (1) N
    Bestand_privchar (1) N

    In eerste instantie bevat deze tabel de root-gebruiker met het wachtwoord dat u hebt ingesteld en de hostnaam "%". Standaard kan root inloggen vanaf elke host, heeft alle privileges en toegang tot alle databases. De tabel bevat ook een vermelding voor gebruiker "% ", die onmiddellijk moet worden verwijderd, omdat het toegang geeft aan elke gebruiker.

    verwijderen van gebruiker waarbij gebruiker = "%";

    Volg deze stappen om een ​​nieuwe gebruiker toe te voegen:

    invoegen in gebruikerswaarden (host, gebruiker, wachtwoord) ("% .domain.com", "john", wachtwoord ("df456"); invoegen in gebruikerswaarden (host, gebruiker, wachtwoord) ("localhost, " mary ", wachtwoord ("keuken"); selecteer host, gebruiker, wachtwoord van gebruiker;
    GastheerGebruikerWachtwoord
    % wortel456g879k34df9
    % .domein.comJohn657t234d980hg6
    localhostMaria234d76gh88rt9

    uitleg:

    1.Het insert-commando voegt gegevens in de tabel in, vergeet niet de ";"-commando's te beëindigen.
    2.Gebruik bij het invoeren van het wachtwoord de functie wachtwoord (), anders werkt het wachtwoord niet!
    3.Alle wachtwoorden zijn versleuteld met mysql, dus u ziet wartaal in het veld Wachtwoord. Dit wordt gedaan om veiligheidsredenen.
    4. Het is geen goede gewoonte om privileges toe te kennen aan gebruikers in de gebruikerstabel, aangezien ze in dit geval globaal zijn en van toepassing zijn op alle databases. Verleen privileges aan elke gebruiker voor een specifieke database in de db-tabel, die later zal worden besproken .
    5.Bij het specificeren van de hostnaam voor netwerkaanmeldingen, wordt aanbevolen om expliciet de volledig gekwalificeerde hostnaam op te geven, niet "%". In het bovenstaande voorbeeld mag john inloggen op de server vanaf alle machines in het domein domain.com. U kan ook machine-IP-adressen specificeren en subnetten maskeren voor meer veiligheid.


  • Bepaalt tot welke databases welke gebruikers toegang hebben en van welke hosts. In deze tabel kunt u elke gebruiker toegang geven tot de databases en privileges toewijzen. Als u de opdracht uitvoert kolommen uit db weergeven; we krijgen het volgende:
    VeldTypeNul StandaardExtra
    Gastheerchar (60) PRI
    Dbchar (32) PRI
    Gebruikerchar (16) PRI
    Select_privchar (1) N
    Insert_privchar (1) N
    Update_privchar (1) N
    Delete_privchar (1) N
    Create_privchar (1) N
    Drop_privchar (1) N

    Standaard zijn alle privileges ingesteld op "N". Laten we bijvoorbeeld de gebruiker john toegang geven tot de bibliotheekdatabase en hem de privileges voor selecteren, invoegen en bijwerken geven (de beschrijving van de belangrijkste mysql-commando's wordt in een aparte sectie gegeven , nu is mijn doel om te laten zien hoe tabellen werken privileges).

    voeg in db (host, gebruiker, db, select_priv, insert_priv, update_priv) waarden in ("% .domain.com", "john", "library", "Y", "Y", "Y");

    De privileges die zijn ingesteld op de db-tabel zijn alleen van toepassing op de bibliotheekdatabase; als u deze privileges instelt op de gebruikerstabel, worden ze ook uitgebreid naar andere databases, zelfs als de toegang ertoe niet expliciet is ingesteld.

  • Gastheer

    De hosttabel wordt gebruikt om het toegangsbereik in de db-tabel uit te breiden. Als er bijvoorbeeld meer dan één host toegang tot een database moet worden verleend, moet u de hostkolom in de db-tabel leeg laten en de vereiste host toevoegen namen naar de hosttabel. Laten we het commando uitvoeren toon kolommen van host;

    VeldTypeNulToetsStandaardExtra
    Gastheerchar (60) PRI
    Dbchar (32) PRI
    Select_privchar (1) N
    Insert_privchar (1) N
    Update_privchar (1) N
    Delete_privchar (1) N
    Create_privchar (1) N
    Drop_privchar (1) N

Zoals u in de tabel kunt zien, kunt u hier ook privileges instellen voor toegang tot de database. Deze worden meestal zelden onnodig gebruikt. Alle toegangsprivileges moeten voor elke gebruiker in de db-tabel worden ingesteld en in de hosttabel worden alleen de hostnamen vermeld . De server leest alle tabellen, controleert gebruikersnaam, wachtwoord, hostnaam, databasenaam, privileges. Als in de db-tabel de privileges selecteren, zijn insert ingesteld op "Y", en in de hosttabel op "N", dan op het einde de gebruiker zal nog steeds "Y" ontvangen, verwarrend, het is beter om privileges toe te kennen aan de db-tabel.

Deze 3 tabellen zijn de belangrijkste. In nieuwe versies van MySQL, sinds 3.22, zijn er nog 2 tabellen toegevoegd - tabellen_priv en kolommen_priv, waarmee u toegangsrechten kunt instellen voor een specifieke tabel in de database en zelfs voor een specifieke kolom. werken als de db-tabel, verwijzen alleen naar tabellen en kolommen. Vanaf versie 3.22 kunt u ook het GRANT-commando gebruiken om toegang te verlenen tot databases, tabellen en tabelkolommen, zodat u de tabellen db, tables_priv en columns_priv niet handmatig hoeft te wijzigen. Het GRANT-commando wordt in de volgende secties in detail besproken .

Bevoegdheden geleverd door MySQL.

Voorrecht Spreker Waar wordt gebruikt?
selecteer Select_privtafels
invoegen Insert_privtafels
update Update_privtafels
verwijderen Delete_privtafels
inhoudsopgave Index_privtafels
wijzigen Alter_privtafels
creëren Create_privDB, tabellen, indexen
laten vallen Drop_privDB of tabellen
studiebeurs Grant_privDB of tabellen
referenties References_privDB of tabellen
herladen Reload_privserverbeheer
stilgelegd Shutdown_privserverbeheer
Verwerken Process_privserverbeheer
het dossier Bestand_privtoegang tot bestanden op de server

Selecteer-gebruikt om informatie uit tabellen te halen.Select kan ook zonder toestemming worden gebruikt om toegang te krijgen tot een database, bijvoorbeeld als rekenmachine.

Invoegen-gebruikt om informatie in een tabel in te voegen, bijvoorbeeld:

Verwijderen-gebruikt om informatie uit tabellen te verwijderen.

Creëren-maakt het mogelijk om er databases en tabellen in te maken.Voorbeelden:

mysql> mysqladmin -u john -ptest create mydb // Creëert een lege db. mysql> gebruik mijndb; Database gewijzigd. tabelbewaking maken (id int (5) niet null auto_increment, voornaam varchar (15) niet null, achternaam varchar (20) niet null, adres varchar (80) niet null, primaire sleutel (id), sleutel (achternaam));

Laten vallen-gebruikt voor het verwijderen van tabellen en databases.

Studiebeurs-Hiermee kan een gebruiker andere gebruikers de privileges geven die hij zelf bezit.Twee gebruikers met verschillende privileges en GRANT privileges kunnen hun rechten combineren.

Inhoudsopgave-Hiermee kan de gebruiker indexen maken en neerzetten.

Bestand-gebruiker met dit recht kan de opdrachten LOAD DATA INFILE en SELECT ... INTO OUTFILE uitvoeren en kan elk bestand op de MySQL-server lezen en schrijven.

De laatste 3 privileges worden gebruikt om de server van het team te beheren mysqladmin.

Speciale MySQL-gebruikers.

Er zijn 3 speciale gebruikers in MySQL: monty, admin en dummy.

  • monty

    Superuser. Kan inloggen op de server vanaf een lokale host of elke host op het netwerk. Heeft toegang tot alle databases en alle privileges, maar als root voor de eerste keer kan inloggen zonder wachtwoord, moet monty een wachtwoord gebruiken en moet worden toegevoegd handmatig naar tabellen privileges.

    Opgemerkt moet worden dat u gegevens moet invoeren voor zowel localhost als "%", dat wil zeggen elke host op het netwerk.

  • beheerder

    Gebruiker die kan inloggen op de server vanuit localhost zonder wachtwoord en aan wie beheerdersrechten zijn toegewezen Herladen en verwerken.Gebruikersbeheerder kan opdrachten gebruiken mysqladmin reload, mysqladmin refresh en mysqladmin flush- *,en mysqladmin-proceslijst.

    De beheerder heeft geen toegang tot databases. Rechten voor toegang tot bepaalde databases moeten afzonderlijk worden toegewezen, ofwel in de db-tabel, of met het GRANT-commando.

  • dummy

    Gebruiker die kan inloggen op de server zonder wachtwoord, maar alleen vanaf de localhost. Alle globale privileges zijn ingesteld op "N" behalve "USAGE", waarmee dummy gebruikers zonder privileges kan aanmaken. Databasepermissies moeten worden gegeven door root.

Aanmaken en wijzigen van databases en tabellen in MySQL.

Aanmaken van databanken.

Het maken van een database in MySQL wordt uitgevoerd met behulp van het hulpprogramma mysqladmin.Aanvankelijk is er alleen een mysql-database voor admin en een testdatabase waarop elke gebruiker kan inloggen en die standaard leeg is. Het onderstaande voorbeeld illustreert hoe u een database maakt.

Of, in een andere database, bijvoorbeeld in mysql, voer het commando in:

mysql> gebruik data1 Database gewijzigd.

Nu kunt u tabellen maken en informatie invoeren.

Gegevenstypen in MySQL.

Voordat u tabellen maakt, moet u bekend zijn met de gegevenstypen die MySQL ondersteunt, die in de volgende tabel worden samengevat:

GROOT [(lengte)]8 byte geheel getal
BLOBBinair object (maximale lengte 65535 bytes)
CHAR (NUM)String met vaste lengte (1DATUMSlaat datumgegevens op. Gebruikt het formaat "JJJJ-MM-DD". Kan worden gewijzigd als een tekenreeks of nummer. JJJJ-MM-DD ("-" kan ELK niet-cijferig zijn) JJ-MM-DD ("-" kan ELK niet-cijfer zijn) JJMMDD JJMM Het bereik voor dit gegevenstype is 0000-00-00 tot 9999-12 -31. In tegenstelling tot TIMESTAMP accepteert DATE jaren als twee cijfers van 0000 tot 0099. Dit is in de meeste gevallen niet erg handig. Gebruik jaren van vier cijfers voor DATE-velden. Het DATE-type is 4 bytes lang.
DATUM TIJDCombinatie van DATE- en TIME-typen. Het type DATETIME is identiek aan het type TIMESTAMP met de volgende uitzonderingen: Wanneer een record wordt ingevoegd in een tabel die velden van het type DATETIME bevat, wordt het veld DATETIME niet gewijzigd. Het bereik voor een veld van het type DATETIME is "0000-01-01 00:00:00" - "9999-12-31 23:59:59" bij gebruik in tekenreekscontext en "00000000000000" - "99991231235959" bij gebruik in getalcontext ... Het DATETIME-type is 8 bytes lang.
DECIMAAL (lengte, dec)Decimaal getal met drijvende komma.
DUBBEL [(lengte, dec)]Een getal met dubbele precisie (4 of 8 bytes) met een maximale lengte en een vast aantal decimale getallen.
ZWEVEN [(precisie)]Drijvende komma nummer. FLOAT (4) en FLOAT enkele precisie. FLOAT (8) biedt dubbele precisie.
FLOAT [(lengte, decimalen)]Een enkelvoudig precisiegetal met een maximale lengte en een vast aantal decimale getallen (4 bytes).
INT [(lengte)]Geheel getal (4 bytes).
INTEGER [(lengte)]Geheel getal 4 bytes
LONGBLOBEen binair object met een maximale lengte van 2 ** 32 bytes.
MEDIUMBLOBEen binair object met een maximale lengte van 16.777.216 bytes.
GEMIDDELD [(lengte)]Geheel getal (3 bytes).
ECHT [(lengte, dec)]Identiek aan DUBBEL (8 bytes).
KLEINE [(lengte)]Geheel getal (2 bytes).
TINYBLOBEen binair object met een maximale lengte van 255 bytes.
KLEININTJE [(lengte)]Geheel getal (1 byte).
VARCHAR (GETAL)Snaar met variabele lengte (1TIJDSlaat informatie over de tijd op. Gebruikt het "HH: MM: SS" formaat. Kan als tekenreeks of nummer worden gebruikt. Het MySQL TIME-type begrijpt de volgende syntaxis. HH: MM: DD HHMMDD HHMM HH TIJD-gegevens zijn 3 bytes lang.
TIJDSTEMPEL (NUM)Verandert automatisch bij invoegen/update. Het heeft de indeling JJMMDDHHMMSS of JJJJMMDDHHMMSS. U kunt het veld TIMESTAMP wijzigen wanneer u INSERT doet. Dit is handig wanneer u een aangepaste datum/tijd voor opname wilt instellen. Tijdens wijzigingen hoeft u geen waarde op te geven voor uw TIMESTAMP-veld, of NULL op te geven als een waarde die moet worden ingevoegd. Anders krijgt u een ongeldige waarde voor dit veld. Bij gebruik van mysql met ODBC en Access moet u een waarde van 14 gebruiken voor NUM, omdat dit MySQL dwingt om altijd vier cijfers in jaren te gebruiken. Een waarde van 12 dwingt MySQL om twee cijfers per jaar te gebruiken. De standaardwaarde is 14. Merk op dat in het geval van tabellen met meerdere TIMESTAMP-velden, alleen het eerste veld automatisch wordt bijgewerkt.

Maken en wijzigen van tabellen.

Laten we de klantentabel in de data1-database maken:

mysql> gebruik data1 Database gewijzigd. mysql> tabelklanten aanmaken (emp_id int (4) not null auto_increment, emp_name varchar (10) niet null, emp_lname varchar (15) niet null, adres varchar (60) niet null, phone int (10), primaire sleutel (emp_id) );

We hebben een lege tabel gemaakt en er zijn verschillende manieren om er gegevens in in te voeren:
a) handmatig met behulp van de opdracht invoegen in;
b) Laad gegevens uit een tekstbestand, wat meer de voorkeur heeft, vooral als u enkele duizenden records moet invoeren.De syntaxis van deze opdracht zal later worden beschreven.
c) gebruik het hulpprogramma mysqlimport ook om gegevens uit een tekstbestand te laden.

Een voorbeeld van handmatige gegevensinvoer:

Met betrekking tot auto_increment in kolom emp_id, dit betekent dat de numerieke waarde van deze kolom automatisch met één wordt verhoogd bij elk nieuw record. Dat wil zeggen, als we de waarde 1001 hebben ingevoerd, is de volgende 1002, enz. De waarde in zo'n kolom wordt één keer ingevoerd om stel het startpunt in, en dan zal de server de vereiste waarden zelf vervangen.

De syntaxis voor de opdracht LOAD DATA INFILE.

GEGEVENSINFILE "file_name.txt" IN TABEL tbl_name INGESLOTEN DOOR ""]] [(col_name, ...)]

Stel dat er een tekstbestand 123.txt is met 2000 records om in een tabel in te voeren. U wilt een tabel maken die dezelfde structuur en hetzelfde aantal velden heeft als het bestand (en ook de juiste gegevenstypen). velden in bestand gescheiden door komma's Ook moet het bestand in de juiste database staan. Voer de volgende opdracht in:

LAAD DATA INFILE "123.txt" in de velden van tabelklanten die eindigen op ",";

Dat is alles.De gegevens uit het bestand worden in een tabel gezet.

Gebruik de commando's om tabellen en gegevens erin te wijzigen bijwerken en wijzigen tafel... Laten we eens kijken hoe ze werken met de klantentabel als voorbeeld:

Klanten
emp_idemp_nameemp_lnameadrestelefoon
1001 JohnwandelaarNew York1235468798
1002 RekeningSmitChicago7650945237
1003 JackNicolsonDallas9874325097

Voorbeeld van opdrachtactie tabel wijzigen:

Je kunt het zelf controleren :)

Het wijzigen van gegevens in tabellen doe je met het commando update Laten we dezelfde koperstabel als voorbeeld nemen.

mysql> update kopers set address = "Seattle" waar emp_lname = "Smith";

De commando's worden ook gebruikt om tabellen te wijzigen Verwijderen en verwijderen.

Verwijderen-verwijdert een rij uit de tabel. Als u bijvoorbeeld het commando invoert
verwijderen van kopers waar emp_id = "1002"

de rij voor Bill Smith wordt verwijderd.

Laten vallen-indien gebruikt in Alter table, verwijdert de kolom uit de tabel.

Opdracht Laten vallen Het wordt ook gebruikt om tabellen en databases te verwijderen. Wees voorzichtig, aangezien elke verwijdering onomkeerbaar is, kunnen gegevens alleen worden hersteld vanaf een reservekopie.

Veelvoorkomende problemen en hun oplossingen.

Het meest voorkomende probleem is het bericht Toegang geweigerd voor gebruiker ... Als dit een gewone gebruiker is, dan kan de beheerder het uitzoeken, maar als de beheerder zo'n melding krijgt, dan is dit al een probleem. Heel vaak vergeet de beheerder bij het instellen van een wachtwoord voor root de functie te gebruiken wachtwoord (), maar introduceert eenvoudig:

update gebruiker set wachtwoord = "mamamia" waar gebruiker = "root";

Daarna, wanneer hij probeert de database te betreden, krijgt hij het bericht Toegang geweigerd. Dit wachtwoord wordt niet gelezen. U moet correct invoeren:

update gebruiker set wachtwoord = wachtwoord ("mamamia") waarbij gebruiker = "root";

Dit is een zeer belangrijke stap en je moet voorzichtig zijn. De enige uitweg in Windows is om de server te verwijderen en opnieuw te installeren, aangezien er nog niets is geconfigureerd.

Als de gebruiker een dergelijk probleem ondervindt, is de reden waarschijnlijk een onjuiste instelling van de privilegetabellen, allereerst dezelfde wachtwoordinstelling, of de vermeldingen in de db- en hosttabellen zijn onjuist. Laten we dit bekijken met een eenvoudig voorbeeld :

Gebruiker
Gastheer% .domein.com
GebruikerJerry
Wachtwoord378b243hk8796
Select_privja
Db
Gastheer% .domein.com
Dbgegevens1
GebruikerJerry
Insert_privja
Select_privja
Update_privja
Delete_privja
De tabellen bevatten informatie voor de gebruiker jerry. Zoals je kunt zien, kan jerry inloggen via het netwerk vanaf elke computer in het domein.com domein door zijn naam en wachtwoord in te voeren. De server leest de tabel Gebruiker, bepaalt de overeenstemming van de naam en wachtwoord, dan de Db-tabel, die aangeeft tot welke databases toegang is. Als alles correct is, krijgt jerry toegang tot de data1 database. In deze database kan jerry informatie in tabellen bekijken, daar nieuwe gegevens plaatsen, de inhoud van rijen wijzigen en verwijder rijen.Als hij een nieuwe tabel wil maken, ontvangt hij een bericht Toegang geweigerd omdat hij geen toestemming heeft om tabellen te maken.

Een zeer belangrijke nuance: in de User-tabel voor Jerry is de Select-machtiging gespecificeerd, die globaal is, dat wil zeggen dat deze geldig is voor elke database, zelfs als deze er geen toegang toe heeft. Als jerry bijvoorbeeld het commando invoert :

selecteer * van data2.authors;

hij krijgt toegang tot deze tabel, hoewel toegang tot de data2-database niet is toegewezen in de Db-tabel. Daarom is het niet nodig om gebruikers zonder speciale noodzaak gebruikersrechten toe te kennen in de User-tabel, maar om dit in de Db-tabel voor elk te doen specifieke databank.

Stel jerry werkt tijdelijk op een andere afdeling in een ander domein, en wanneer hij toegang probeert te krijgen tot de database, krijgt hij toegang geweigerd omdat de computers in dat domein geen toegang hebben tot de database, ga in dit geval als volgt te werk: wissen het Host-veld in de Db-tabel en voer de volgende gegevens in de Host-tabel in:

update db set host = "" waar gebruiker = "jerry";
invoegen in host (host, db) waarden ("% .domain.com", "data1");
invoegen in host (host, db) waarden ("monster.domain2.com", "data1");

Het is niet nodig om privileges in de Host-tabel op te geven. Het belangrijkste is dat de gegevens in de privilege-tabellen nergens worden gedupliceerd, zodat er geen tegenstrijdigheden zijn. De gegevens voor de gebruikersnaam en het wachtwoord moeten worden toegewezen in de User-tabel , privileges in de Db-tabel, hosts waarvandaan toegang is toegestaan ​​, in de Host-tabel Als je alles zorgvuldig invoert, zouden er geen problemen moeten zijn.

MySQL-versies 3.22 en hoger hebben een zeer goede GRANT-opdracht waarmee u gebruikers toegang kunt geven tot databases en tabellen zonder de toekenningstabellen handmatig te wijzigen.

GRANT selecteren, update invoegen, verwijderen op data1.telefoon naar [e-mail beveiligd]% .domain.com geïdentificeerd door "wachtwoord";

Met deze opdracht kunt u toegangsrechten specificeren, zelfs tot bepaalde kolommen van de tabel:

GRANT selecteer (id, naam, adres, telefoon), update (adres, telefoon) op data2.customers om [e-mail beveiligd]% .domain.com geïdentificeerd door "wachtwoord";

Met deze opdracht worden automatisch gegevens in de tabellen Db, Tables_priv en Column_priv geplaatst, waardoor handmatige wijziging niet meer nodig is.

Als u een privilege van een gebruiker moet intrekken, gebruikt u de opdracht REVOKE.

REVOKE update (adres, telefoon) op data2.klanten van [e-mail beveiligd]% .domein.com;

Databasequery's en de opdracht Selecteren.

Ik ben niet van plan me te verdiepen in de studie van de SQL-taal, je kunt hierover lezen in elke handleiding over SQL Server, MySQL ondersteunt in principe alle basisopdrachten van de ANSI 92-standaard, maar de opdracht Selecteer verdient er een apart hoofdstuk aan te wijden. De opdracht Select wordt gebruikt om de database te doorzoeken om er informatie uit te halen. De syntaxis van de opdracht is als volgt:

SELECT select_expression, ..., ...] MET full_where_definition rijen]]

Zoals u kunt zien aan de hand van het bovenstaande, worden trefwoorden gebruikt in combinatie met de opdracht Select, waarvan het gebruik een grote invloed heeft op de serverrespons. Laten we ze elk eens bekijken.

  • VERSCHILLEND..

    Slaat regels over waarin alle geselecteerde velden identiek zijn, d.w.z. elimineert dubbele gegevens.

  • WAAR.

    Een Select-clausule waarmee u predikaten kunt instellen waarvan de voorwaarde waar of onwaar kan zijn voor elke rij in de tabel. Alleen die rijen waarvoor een dergelijke verklaring waar is, worden opgehaald. Bijvoorbeeld:

    SELECT u_id, naam van uitgevers WHERE city = "New York";

    Drukt de kolommen u_id en lname af uit de uitgeverstabel waarvan de waarde in de kolom stad-New York staat om de zoekopdracht specifieker te maken.

  • Relationele operatoren.

    Een relationele operator is een wiskundig symbool dat een specifiek type vergelijking tussen twee waarden aangeeft. De relationele operators MySQL heeft:

    Gelijk aan> Groter dan = Groter dan of gelijk aan Niet gelijk

    Deze operators hebben standaardbetekenissen voor numerieke waarden.

    Stel dat u alle klanten wilt zien met beoordelingen hoger dan 200. Aangezien 200 een scalaire waarde is, net als de waarde in de waarderingskolom, kunt u de relationele operator gebruiken om ze te vergelijken.

    KIES * VAN Klanten WAAR beoordeling> 200;

  • Booleaanse operatoren.

    Basic Booleaanse operatoren worden ook herkend in MySQL. Boole's uitdrukkingen zijn waar of onwaar, net als predikaten. Booleaanse operatoren voegen een of meer geldige / ongeldige waarden samen en produceren een enkele geldige of ongeldige waarde. De standaard Booleaanse operatoren die in SQL worden herkend, zijn AND, OR en NOT.

    Stel dat u alle klanten in Dallas wilt zien met een score van meer dan 200:

    SELECTEER * VAN Klanten WAAR stad = "Dallas" EN beoordeling> 200;

    Bij gebruik van de AND-operator moet aan beide voorwaarden worden voldaan, dat wil zeggen dat alle Dallas-klanten met een beoordeling van meer dan 200 moeten worden geselecteerd.

    Bij gebruik van de OR-operator moet aan een van de volgende voorwaarden worden voldaan, bijvoorbeeld:

    SELECTEER * VAN Klanten WAAR stad = "Dallas" OF beoordeling> 200;

    In dit geval worden alle klanten uit Dallas en alle klanten met een rating hoger dan 200 geselecteerd, zelfs als ze niet uit Dallas komen.

    NOT kan gebruikt worden om Booleaanse waarden om te keren Voorbeeld van een zoekopdracht met NOT:

    SELECTEER * VAN Klanten WAAR stad = "Dallas" OF NIET rating> 200;

    Deze query selecteert alle klanten in Dallas en alle klanten met een beoordeling van minder dan 200. In deze query is de operator NOT alleen van toepassing op de uitdrukking rating> 200. U kunt een complexere query maken:

    SELECTEER * VAN Klanten WHERE NOT (stad = "Dallas" OF beoordeling> 200);

    In deze query wordt NOT toegepast op beide expressies tussen haakjes. In dit geval leest de server de expressies tussen haakjes en bepaalt of city = "Dallas" waar is of rating> 200. Als een van beide voorwaarden waar is, is de Booleaanse expressie tussen haakjes waar . Als de Booleaanse uitdrukking tussen haakjes echter waar is, is het predikaat als geheel onjuist omdat NOT true naar false converteert en vice versa, dat wil zeggen dat alle niet-Dallas-klanten met een beoordeling van minder dan 200 worden geselecteerd.

  • IN.

    De IN-operator definieert een reeks waarden waarin een bepaalde waarde al dan niet kan worden opgenomen, bijvoorbeeld een query

    SELECTEER * VAN VERKOPERS WAAR stad = "Barcelona" OF stad = "Londen";

    kan eenvoudiger worden herschreven:

    SELECTEER * VAN VERKOPERS WAAR stad IN ("Barcelona", "Londen");

    IN definieert een set waarden met behulp van de namen van de leden van de set, tussen haakjes en gescheiden door komma's.Het controleert vervolgens de verschillende opgegeven waarden en probeert een overeenkomst te vinden met de waarden in de set. Als dit gebeurt, is het predikaat correct. Enkele aanhalingstekens worden weggelaten wanneer de set cijfers bevat in plaats van tekens.

  • TUSSEN.

    De BETWEEN-operator is vergelijkbaar met de IN-operator. In tegenstelling tot het definiëren door getallen uit een set, zoals IN, definieert BETWEEN een bereik waarvan de waarden moeten worden verlaagd, waardoor het predikaat correct is. U moet het trefwoord BETWEEN invoeren met een beginwaarde, een EN-sleutelwoord en een eindwaarde. In tegenstelling tot IN is BETWEEN volgordegevoelig en moet de eerste waarde in een zin de eerste zijn in alfabetische of numerieke volgorde. Bijvoorbeeld:

    SELECTEER * UIT verkopers WAAR comm TUSSEN .10 EN .12;
    SELECTEER * UIT Verkopers WAAR stad TUSSEN "Berlijn" EN "Londen";

  • LEUK VINDEN.

    LIKE is alleen van toepassing op velden van het type CHAR of VARCHAR waarmee het wordt gebruikt om subtekenreeksen te vinden. Die. het zoekt naar een karakterveld om te zien of een deel van zijn string overeenkomt met een voorwaarde.Als voorwaarde gebruikt het wildkards - speciale tekens die met alles kunnen overeenkomen. Er zijn twee soorten jokertekens die worden gebruikt met LIKE:

      het onderstrepingsteken (_) staat voor elk afzonderlijk teken.

    • het "%"-teken, dat een willekeurig aantal tekens vervangt.

    Als we de volgende voorwaarden stellen:

    SELECTEER * VAN Klanten WAAR fname LIKE "J%";

    dan worden alle klanten met namen die beginnen met J geselecteerd: John, Jerry, James, etc.

  • GRAAF.

    Aggregaatfunctie die de waarden in een kolom of het aantal rijen in een tabel telt. Bij het werken met een kolom gebruikt het DISTINCT als argument:

    SELECTEER AANTAL (VERSCHILLENDE snum) UIT Bestellingen;

    Heeft bij het tellen van regels de syntaxis:

    SELECTEER AANTAL (*) VAN Klanten;

  • GROEP OP.

    Met de GROUP BY-clausule kunt u een subset van de waarden in een bepaald veld definiëren in termen van een ander veld, en een aggregatiefunctie toepassen op de subset. Dit maakt het mogelijk om velden en aggregatiefuncties te combineren in een enkele SELECT-clausule. Stel dat u het hoogste aankoopbedrag wilt vinden dat door elke verkoper is ontvangen. U kunt voor elk een afzonderlijke query maken door voor elke veldwaarde MAX () in de tabel te selecteren. Met GROUP BY kunt u ze allemaal in één opdracht plaatsen:

    SELECTEER snum, MAX (amt) UIT Bestellingen GROEP OP snum;

  • HEBBEN.

    HAVING definieert de criteria die worden gebruikt om bepaalde groepen uit de uitvoer te verwijderen, net zoals de WHERE-clausule doet voor individuele rijen. Bijvoorbeeld:

    SELECT cid, cname, prijs, max (prijs) // max () is ook een verzamelfunctie VANAF klanten DIE max (prijs)> 500 HEBBEN;

    HAVING werkt als WHERE, maar geaggregeerde functies kunnen niet worden gebruikt met WHERE.

  • BESTEL DOOR.

    Deze opdracht ordent de uitvoer van een query volgens de waarden in een bepaald aantal geselecteerde kolommen. Net als bij GROUP BY zijn talloze kolommen in elkaar geordend.

  • BESTAAT.

    Gebruikt in subquery's.

    SELECTEER cnum, cname, stad VANUIT Klanten WAAR BESTAAT (SELECTEER * VAN KLANTEN WAAR stad = "San Jose");

    Het neemt een subquery als argument en evalueert het als waar als het uitvoer produceert, of als onwaar als dat niet het geval is, waardoor het verschilt van andere predikaatoperatoren waarin het niet onbekend kan zijn. We kunnen bijvoorbeeld beslissen of we bepaalde gegevens uit de tabel Klanten willen ophalen als, en alleen als, een of meer van de klanten in die tabel zich in San Jose bevinden.

  • UNIE.

    UNION verschilt van subquery's doordat geen van de twee (of meer) query's wordt beheerd door een andere query. Alle queries worden onafhankelijk van elkaar uitgevoerd en hun output is al gecombineerd. Bijvoorbeeld:

    SELECT snum, sname FROM Verkopers WHERE city = "Londen" UNION SELECT cnum, cname FROM Customers WHERE city = "Londen";

    De UNION-component combineert de uitvoer van twee of meer SQL-query's in één set rijen en kolommen.

  • DESC, ASC.

    DESC-DESCEDENT, output data in omgekeerde volgorde (alfabetisch en numeriek) ASC is de standaard.

In een notendop, MySQL ondersteunt bijna alle belangrijke SQL Server-opdrachten, dus u kunt meer lezen over SELECT in elke SQL-zelfstudie.

Basis MySQL-hulpprogramma's.

De MySQL-distributie bevat de volgende hulpprogramma's:

Mysqladmin

Een hulpprogramma voor serverbeheer. Kan zowel door de beheerder als door sommige gebruikers worden gebruikt die bepaalde rechten hebben gekregen, bijvoorbeeld - Reload_priv, Shutdown_priv, Process_priv en Bestand_priv Deze opdracht kan worden gebruikt om databases aan te maken, het wachtwoord van een gebruiker te wijzigen (de beheerder kan het wachtwoord voor elke gebruiker wijzigen en een gewone gebruiker kan alleen zijn eigen wachtwoord wijzigen), de server opnieuw opstarten en stoppen, de lijst met processen bekijken die op de server worden uitgevoerd . Mysqladmin ondersteunt de volgende opdrachten:

Een voorbeeld van het gebruik van mysqladmin om een ​​wachtwoord te wijzigen:

mysqladmin -u bob wachtwoord srawberry

Merk op dat als u mysqladmin gebruikt om een ​​wachtwoord in te stellen, u de wachtwoordfunctie () niet hoeft te gebruiken. Mysqladmin zorgt zelf voor de wachtwoordcodering.

Mysqlaccess

Wordt gebruikt om de privileges van een gebruiker voor toegang tot een specifieke database te controleren. Algemene syntaxis:

mysqlaccess-opties

Een handig hulpprogramma om de toegangsrechten van een gebruiker te controleren als deze een bericht 'Toegang geweigerd' ontvangt wanneer ze proberen verbinding te maken met een database.

Opties:

Mysqlshow

Het wordt gebruikt om te laten zien met welke databases de server werkt, welke tabellen elke database bevat en welke kolommen elke tabel heeft.

mysqlshow [opties]]]

Mysqlshow kan de volgende parameters gebruiken:

Als u mysqlshow zonder argumenten invoert, worden alle databases weergegeven, als u een databasenaam opgeeft, worden alle tabellen erin weergegeven.

Mysqldump

Wordt gebruikt om de inhoud van de database te dumpen (back-up). U kunt de inhoud van de database naar een bestand schrijven. Syntaxis:

mysqldump [opties]]]

Mysqldump kan de volgende parameters gebruiken:

Isamchk

Met dit hulpprogramma kunt u tafelreparatie, tabelbeheer en het verzamelen van statistieken uitvoeren.

isamchk [-? adeiqrsvwzIV] [-k #] [-O xxxx = grootte] [-Si] [-Sr #] [-O sleutelbuffer = #]
[-O leesbuffer = #] [-O schrijfbuffer = #] [-O sorteersleutelblokken = #] bestanden

Isamchk wordt gebruikt om de consistentie van tabellen te controleren en problemen op te lossen die dit kan veroorzaken. Als de gebruiker regelmatig gegevens in tabellen verwijdert en toevoegt, is dit hulpprogramma erg handig. Isamchk kan de volgende opties gebruiken:

Als u de optie -r gebruikt, moet u mysqld stoppen Voordat u begint, moet u naar de map gaan met de tabel die moet worden gecontroleerd of gerepareerd.

Isamlog

Transactielogboek, gebruikt met de optie --log-isam = bestandsnaam naar mysqld. Een bestand registreert alle wijzigingen die in de database zijn aangebracht. Kan worden gebruikt om de database te herstellen. Als er een back-up van de database is voordat het isam-logboek werd gegenereerd, kan de informatie eenvoudig worden hersteld. Als er geen kopie is, moeten alle logboeken vanaf het begin van de database worden gebruikt.

Safe_mysqld

Script voor het starten van de mysqld-daemon op Unix-versies Uitgevoerd tijdens het opstarten. Om automatisch te starten, moet u een item toevoegen aan een van de systeeminitialisatiebestanden.

Website ontwikkeling | |

Het is niet alleen mogelijk via PHP. Bij MySQL wordt een consoleclient geleverd om verbinding te maken met de MySQL-server. Console - dit betekent dat het programma geen vensterinterface heeft, maar alleen een opdrachtregelinterface, waarin toegang tot databases wordt uitgevoerd met behulp van SQL-query's.

De opdrachten om verbinding te maken met MySQL op de opdrachtregel, en meer nog de SQL-query's zelf, zijn identiek voor. In wat volgt, zal ik kortheidshalve "MySQL" schrijven, maar overal bedoel ik "MySQL of MariaDB", aangezien er in dit geval geen verschil tussen hen is.

Door via de opdrachtregel verbinding te maken met het MySQL DBMS, kunt u verschillende taken uitvoeren: databases en hun tabellen bekijken, query's naar databases verzenden en de resultaten van deze query's ontvangen.

Een clientprogrammaopdracht genaamd mysql.exe wordt gebruikt om verbinding te maken met de MySQL-server. Het moet worden gestart, maar je moet het niet doen met een dubbelklik, zoals een gewoon programma, maar vanaf de opdrachtregel.

Laten we beginnen door op de sneltoets te drukken Win + r en uitvoeren

Er wordt een opdrachtprompt geopend.

Nu moeten we naar de map met het bestand gaan mysql.exe... Deze map bin in de map waar uw MySQL-database is geïnstalleerd. Ik heb bijvoorbeeld MariaDB in de map geïnstalleerd C: \ Server \ bin \ mariadb \... Daarom bevindt het voor ons interessante bestand zich in de directory C: \ Server \ bin \ mariadb \ bin \... Om naar deze map te gaan, gebruik je het commando CD op de volgende manier:

Cd C: \ Server \ bin \ mariadb \ bin \

Vervang in deze opdracht C: \ Server \ bin \ mariadb \ bin \ door het juiste pad voor uw systeem

Laten we nu het bestand mysql.exe uitvoeren. Het is niet nodig om de bestandsextensie .exe op te geven - het systeem raadt vanzelf wat we bedoelen. We moeten ook de optie gebruiken -u en -P... Na de eerste optie moet u de gebruikersnaam opgeven - wortel... Na de tweede optie is het wachtwoord voor de gebruiker. In mijn geval is het wachtwoord niet ingesteld, dus ik ren zonder de optie -P:

Mysql -u root

Het lijkt misschien alsof er niet veel is veranderd, maar de nieuwe opdrachtregelprompt

MariaDB [(geen)]>

geeft aan dat we zijn verbonden met de MySQL-server. Om precies te zijn, in mijn geval zijn we verbonden met de MariaDB-server.

Voer de volgende opdracht in om de lijst met databases te bekijken:

TOON DATABANKEN;

Om volgende verzoeken naar een specifieke database te sturen (bijvoorbeeld om te testen), gebruik je het commando GEBRUIK MAKEN VAN:

GEBRUIK-test;

Voer de opdracht uit om de tabellen in de geselecteerde database te bekijken:

TOON TABELLEN;

Laten we een soort tabel maken:

MAAK TABEL AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR (100), PRIMAIRE SLEUTEL (AuthorID));

Laten we nog eens kijken naar de inhoud van de testdatabase.