om MySQL Command-Line Client
mysql (från MariaDB 10.4.6, även kallad mariadb) är ett enkelt SQL-skal (med GNU readlinecapabilities). Den stöder interaktiv och icke-interaktiv användning. När du användsinteraktivt presenteras frågeresultaten i ett ASCII-tabellformat. När du användernon-interaktivt (till exempel som ett filter) presenteras resultatet intab-separerat format. Utdataformatet kan ändras med hjälp av kommandoralternativ.
om du har problem på grund av otillräckligt minne för stora resultatuppsättningar, använd alternativet--quick
., Detta tvingar mysql att hämta resultat frånservern en rad i taget snarare än att hämta hela resultatuppsättningen ochbuffera den i minnet innan den visas. Detta görs genom att returnera resultatuppsättningen med hjälp av mysql_use_result()
C API-funktionen i theclient/server library i stället för mysql_store_result()
.
det är väldigt enkelt att använda mysql. Anropa det från prompten för din kommandotolk följer:
mysql db_name
eller:
mysql --user=user_name --password=your_password db_name
skriv sedan en SQL-sats, avsluta den med ”;”, \G eller \g och tryck på Enter.,
skriva Control-C orsakar mysql att försöka döda thecurrent uttalande. Om detta inte kan göras, eller Control-C skrivs igen innanutlåtandet dödas, lämnar mysql.
Du kan köra SQL-satser i en scriptfil (batchfil) så här:
mysql db_name < script.sql > output.tab
Från MariaDB 10.4.6 ärmariadb
tillgänglig som en symbolisk länk tillmysql
.
Från MariaDB 10.5.2 ärmysql
den symboliska länken ochmariadb
det binära namnet.,
använda mysql
kommandot att användamysql
och den allmänna syntaxen är:
mysql <options>
alternativ
mysql
stöder följande alternativ:
alternativ | beskrivning |
---|---|
-? ,--help |
visa denna hjälp och avsluta., |
-I , --help |
Synonym for -? |
--abort-source-on-error |
Abort ’source filename’ operations in case of errors. |
--auto-rehash |
Enable automatic rehashing. This option is on by default, which enables database, table, and column name completion. Use --disable-auto-rehash , --no-auto-rehash or skip-auto-rehash to disable rehashing., Det gör att mysql börjar snabbare, men du måste utfärda rehash-kommandot om du vill använda namnkomplettering. För att slutföra ett namn anger du den första delen och trycker på Tab. Om namnet är entydigt, avslutar mysql det. Annars kan du trycka på Tab igen för att se de möjliga Namnen som börjar med vad du har skrivit hittills. Slutförande sker inte om det inte finns någon standarddatabas. |
-A ,--no-auto-rehash |
ingen automatisk uppkok. Man måste använda ”rehash” för att få bord och fältkomplettering., Detta ger en snabbare start av mysql och inaktiverar rehashing på återansluta. |
--auto-vertical-output |
växla automatiskt till vertikalt utgångsläge om resultatet är bredare än terminalbredden. |
-B ,--batch |
Skriv ut resultat med fliken som kolumnavskiljare, med varje rad på en ny rad. Med det här alternativet använder mysql inte historikfilen. Batch-läge resulterar i nontabular utdataformat och flyr av specialtecken., Flykten kan inaktiveras genom att använda raw-läge; se beskrivningen för alternativet--raw . (Aktiverar --silent .) |
--binary-mode |
som standard är ASCII ’\0’ inte tillåtet och ’\r\n’ översätts till ’\n’. Den här omkopplaren stänger av båda funktionerna och stänger också av tolkning av alla klientkommandon utom \C och avgränsare, i icke-interaktivt läge (för inmatning piped till mysql eller laddad med kommandot ”källa”). Detta är nödvändigt vid bearbetning utgång från mysqlbinlog som kan innehålla blobbar., |
--character-sets-dir=name |
Directory for character set files. |
--column-names |
Write column names in results. (Defaults to on; use --skip-column-names to disable.) |
--column-type-info |
Display column type information. |
-c , --comments |
Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments ., |
-C ,--compress |
komprimera all information som skickas mellan klienten och servern om båda stöder komprimering. |
--connect-expired-password |
meddela servern att denna klient är beredd att hantera löpt ut lösenord sandlåda läge även om--batch har angetts. Från MariaDB 10.4.3. |
--connect-timeout=num |
antal sekunder före anslutning timeout. Defaults till noll., |
-D , --database=name |
Database to use. |
-# , --debug |
On debugging builds, write a debugging log. A typical debug_options string is d:t:o,file_name . The default is d:t:o,/tmp/mysql.trace . |
--debug-check |
Check memory and open file usage at exit. |
-T , --debug-info |
Print some debug info at exit., |
--default-auth=plugin
|
standard autentisering klientsidan plugin att använda. |
--default-character-set=name |
Ställ in standardteckenuppsättningen. Ett vanligt problem som kan uppstå när operativsystemet använder utf8 eller en annan multibyte teckenuppsättning är att utdata från mysql-klienten formateras felaktigt, på grund av att MariaDB-klienten använder latin1-teckenuppsättningen som standard. Du kan vanligtvis åtgärda sådana problem genom att använda det här alternativet för att tvinga klienten att använda systemteckenuppsättningen istället., Om den är inställd på auto tas teckenuppsättningen från klientmiljön (LC_CTYPE på Unix). |
--defaults-extra-file=file |
läs den här filen efter att de globala filerna lästs. Måste ges som det första alternativet. |
--defaults-file=file |
läs bara standardalternativ från den givna filen. Måste ges som det första alternativet. |
--defaults-group-suffix=suffix |
förutom de givna grupperna, Läs också grupper med detta suffix., |
--delimiter=name |
avgränsare som ska användas. Standardvärdet är semikolon-tecknet (”;”). |
-e ,--execute=name |
utför uttalande och avsluta. Inaktiverar--force och historikfilen. Standardutmatningsformatet är som det som produceras med --batch . |
-f ,--force |
fortsätt även om vi får ett SQL-fel. Ställer --abort-source-on-error till 0., |
-h , --host=name |
Connect to host. |
-H , --html |
Produce HTML output. |
-U , --i-am-a-dummy |
Synonym for option --safe-updates , -U . |
-i , --ignore-spaces |
Ignore space after function names., Tillåter att man har mellanslag (inklusive fliktecken och nya linjetecken) mellan funktionsnamn och” (”. Nackdelen är att detta orsakar inbyggda funktioner för att bli reserverade ord. |
--init-command=str |
SQL-kommandot ska köras när du ansluter till MariaDB-servern. Kommer automatiskt att åter exekveras vid återanslutning. |
--line-numbers |
skriv radnummer för fel. (Standard på; Använd --skip-line-numbers för att inaktivera.,) |
--local-infile |
aktivera eller inaktivera lokal kapacitet för INLÄSNINGSDATAFIL. Med inget värde, alternativet möjliggör lokal. Alternativet kan ges som--local-infile=0 eller--local-infile=1 för att uttryckligen inaktivera eller aktivera lokal. Att aktivera lokal har ingen effekt om servern inte också stöder den. |
--max-allowed-packet=num |
den maximala paketlängden att skicka till eller ta emot från servern. Standard är 16MB, den maximala 1GB., |
--max-join-size=num |
Automatisk gräns för rader i en koppling när du använder--safe-updates . Standard är 1000000. |
-G ,--named-commands |
aktivera namngivna kommandon. Namngivna kommandon betyder mysql interna kommandon (se nedan) . När den är aktiverad kan de namngivna kommandona användas från vilken rad som helst i frågan, annars bara från den första raden, före en retur. Långformatskommandon är tillåtna, inte bara kortformatskommandon., Till exempel identifieras bådequit och\q . Inaktivera med --disable-named-commands . Det här alternativet är inaktiverat som standard. |
--net-buffer-length=num |
buffertstorleken för TCP / IP och socket kommunikation. Standard 16KB. |
-b ,--no-beep |
Stäng av pip på fel. |
--no-defaults |
läs inte standardalternativ från någon alternativ fil. Måste ges som det första alternativet., |
-o ,--one-database |
ignorera uttalanden utom de som inträffar medan standarddatabasen är den som heter på kommandoraden. Denna filtrering är begränsad och baseras endast på användningsangivelser. Detta är användbart för att hoppa över uppdateringar till andra databaser i binärloggen. |
--pager |
personsökare att använda för att visa resultat (Endast Unix). Om du inte tillhandahåller ett alternativ tas standard personsökaren från din ENV-variabel personsökare. Giltiga sökare är mindre, mer, katt, etc. Se interaktiv hjälp (\h) också., Det här alternativet fungerar inte i batch-läge. Inaktivera med --disable-pager . Det här alternativet är inaktiverat som standard. |
-p ,--password |
lösenord att använda när du ansluter till servern. Om du använder det korta alternativformuläret (- p) kan du inte ha ett mellanslag mellan alternativet och lösenordet. Om du utelämnar lösenordsvärdet enligt--password eller-p – alternativet på kommandoraden, frågar mysql för en. Att ange ett lösenord på kommandoraden bör betraktas som osäkert., Du kan använda en alternativ fil för att undvika att ge lösenordet på kommandoraden. |
--plugin-dir=name |
katalog för klientsidan plugins. |
-P ,--port=num |
portnummer att använda för anslutning eller 0 för standard till, i preferensordning, min.cnf, $MYSQL_TCP_PORT, / etc / tjänster, inbyggd standard (3306). |
--print-defaults |
Skriv ut programargumentlistan och avsluta. Måste ges som det första alternativet., |
--progress-reports |
få lägesrapporter för långa körkommandon (t.ex. ALTER TABLE). (Standard på; Använd --skip-progress-reports för att inaktivera.) |
--prompt=name |
Ställ in MySQL-prompten till detta värde. Se snabbkommando för alternativ. |
--protocol=name |
protokollet som ska användas för anslutning (TCP, uttag, rör, minne). |
-q ,--quick |
cache inte resultat, skriva ut den rad för rad., Detta kan sakta ner servern om utgången är avstängd. Använder inte historikfilen. |
-r ,--raw |
för tabellutgång kan ”boxning” runt kolumner skilja ett kolumnvärde från ett annat. För nontabular utdata (t.ex. produceras i batch-läge eller när --batch eller --silent alternativ ges), specialtecken flydde i utdata så att de lätt kan identifieras., Newline, tab, NUL och backslash skrivs som \n , \t , \0 och . Alternativet--raw inaktiverar detta tecken som flyr. |
--reconnect |
återansluta om anslutningen går förlorad. Det här alternativet är aktiverat som standard. Inaktivera med --disable-reconnect ellerskip-reconnect ., |
-U ,--safe-updates |
Tillåt endast de uppdaterings-och DELETE-satser som anger vilka rader som ska ändras med hjälp av nyckelvärden. Om du har ställt in det här alternativet i en alternativfil kan du åsidosätta det genom att använda --safe-updates på kommandoraden. Mer information finns i använda alternativet –safe-updates. |
--secure-auth |
vägra klient ansluta till servern om den använder gamla (pre-MySQL4.1.1) Protokoll. Defaults till false (till skillnad från MySQL sedan 5,6, som standard till true)., |
--select-limit=num |
Automatisk gräns för SELECT när du använder –safe-uppdateringar. Standard 1000. |
--server-arg=name |
skicka inbäddad server detta som en parameter. |
--shared-memory-base-name=name |
shared-memory namn att använda för Windows-anslutningar med delat minne till en lokal server (började med –shared-memory alternativet). Skiftlägeskänslig. |
--show-warnings |
visa varningar efter varje uttalande. Gäller för interaktiv och batch-läge., |
--sigint-ignore |
ignorera SIGINT-signaler (vanligtvis CTRL-C). |
-s ,--silent |
var tystare. Detta alternativ kan ges flera gånger för att producera mindre och mindre utdata. Detta alternativ resulterar i nontabular utdataformat och flyr av specialtecken. Flykten kan inaktiveras genom att använda raw-läge; se beskrivningen för alternativet--raw . |
-L ,--skip-auto-rehash |
inaktivera automatisk uppkok., See --auto-rehash . |
-N , --skip-column-names |
Don’t write column names in results. See --column-names . |
-L , --skip-comments |
Discard comments. Set by default, see --comments to enable. |
-L , --skip-line-numbers |
Don’t write line number for errors. See --line-numbers ., |
-L ,--skip-progress-reports |
inaktiverar att få lägesrapporter för långa kommandon. Se --progress-reports . |
-L ,--skip-reconnect |
återansluta inte om anslutningen går förlorad. Se --reconnect . |
-S ,--socket=name |
för anslutningar till localhost, Unix socket-filen att använda, eller, på Windows, namnet på det namngivna röret att använda., |
--ssl |
aktiverar TLS. TLS är också aktiverat även utan att ställa in det här alternativet när vissa andra TLS-alternativ är inställda. Från och med MariaDB 10.2 kommer alternativet --ssl inte att aktivera verifiering av servercertifikatet som standard. För att verifiera servercertifikatet måste användaren ange alternativet--ssl-verify-server-cert . |
--ssl-ca=name |
definierar en sökväg till en PEM-fil som ska innehålla ett eller flera X509-certifikat för betrodda certifikatmyndigheter (CAs) att använda för TLS., Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg. Se översikt över säkra anslutningar: certifikatmyndigheter (CAs) för mer information. Det här alternativet innebär alternativet--ssl . |
--ssl-capath=name |
definierar en sökväg till en katalog som innehåller en eller flera PEM-filer som var och en ska innehålla ett X509-certifikat för en betrodd certifikatutfärdare (CA) att använda för TLS. Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg., Den katalog som anges av det här alternativet måste köras genom kommandotopenssl rehash . Se översikt över säkra anslutningar: certifikatmyndigheter (CAs) för mer information. Det här alternativet stöds endast om klienten byggdes med OpenSSL eller yaSSL. Om klienten byggdes med GnuTLS eller Schannel, stöds inte det här alternativet. Se TLS-och Kryptografibibliotek som används av MariaDB för mer information om vilka bibliotek som används på vilka plattformar. Det här alternativet innebär alternativet--ssl ., |
--ssl-cert=name |
definierar en sökväg till X509-certifikatfilen som ska användas för TLS. Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg. Det här alternativet innebär alternativet--ssl . |
--ssl-cipher=name |
lista över tillåtna chiffer eller chiffer sviter att använda för TLS. Det här alternativet innebär alternativet--ssl . |
--ssl-crl=name |
definierar en sökväg till en PEM-fil som ska innehålla ett eller flera återkallade X509-certifikat som ska användas för TLS., Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg. Se översikt över säkra anslutningar: listor över återkallelse av certifikat (CRL) för mer information. Det här alternativet stöds endast om klienten byggdes med OpenSSL eller Schannel. Om klienten byggdes med yaSSL eller GnuTLS, stöds inte det här alternativet. Se TLS-och Kryptografibibliotek som används av MariaDB för mer information om vilka bibliotek som används på vilka plattformar., |
--ssl-crlpath=name |
definierar en sökväg till en katalog som innehåller en eller flera PEM-filer som var och en ska innehålla ett återkallat X509-certifikat som ska användas för TLS. Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg. Den katalog som anges av det här alternativet måste köras genom kommandotopenssl rehash . Se översikt över säkra anslutningar: listor över återkallelse av certifikat (CRL) för mer information. Det här alternativet stöds endast om klienten byggdes med OpenSSL., Om klienten byggdes med yaSSL, GnuTLS eller Schannel, stöds inte det här alternativet. Se TLS-och Kryptografibibliotek som används av MariaDB för mer information om vilka bibliotek som används på vilka plattformar. |
--ssl-key=name |
definierar en sökväg till en privat nyckelfil som ska användas för TLS. Det här alternativet kräver att du använder den absoluta sökvägen, inte en relativ sökväg. Det här alternativet innebär alternativet--ssl . |
--ssl-verify-server-cert |
aktiverar verifiering av servercertifikat. Det här alternativet är inaktiverat som standard., |
-t ,--table |
visa utdata i tabellformat. Detta är standard för interaktiv användning, men kan användas för att producera tabellutmatning i batch-läge. |
--tee=name |
Lägg till allt i outfile. Se interaktiv hjälp (\h) också. Fungerar inte i batch-läge. Inaktivera med --disable-tee . Det här alternativet är inaktiverat som standard. |
--tls-version=name |
det här alternativet accepterar en kommaseparerad lista över TLS-protokollversioner., En TLS-protokollversion aktiveras endast om den finns i den här listan. Alla andra TLS-protokollversioner är inte tillåtna. Se översikt över säkra anslutningar: TLS-Protokollversioner för mer information. Detta alternativ lades till i MariaDB 10.4.6. |
-n , --unbuffered |
spola buffert efter varje fråga. |
-u ,--user=name |
användare för inloggning om inte aktuell användare. |
-v ,--verbose |
skriv mer., (- v-v-v ger tabellutmatningsformatet). |
-V , --version |
utdata versionsinformation och avsluta. |
-E ,--vertical |
Skriv ut utmatningen från en fråga (rader) vertikalt. Använd\G – avgränsaren för att ansöka om ett visst uttalande om det här alternativet inte är aktiverat. |
-w , --wait |
om anslutningen inte kan upprättas, vänta och försök igen istället för att avbryta., |
-X ,--xml |
producera XML-utdata. Se mysqldump-xml alternativet för mer. |
option Files
förutom att läsa alternativ från kommandoraden kanmysql
också läsa alternativ från option files. Om ett okänt alternativ tillhandahålls till mysql
I en alternativfil ignoreras det.
följande alternativ relaterar till hur MariaDB kommandoradsverktyg hanterar alternativfiler., De måste ges som det första argumentet på kommandoraden:
i MariaDB 10.2 och senare, mysql
är kopplad till MariaDB Connector/C. MariaDB Connector/C hanterar dock inte parsning av optionsfiler för den här klienten. Det utförs fortfarande av serverns alternativ fil parsningskod. Se MDEV-19035 för mer information.,
Option Groups
mysql
läser alternativ från följande option groups från option files:
Group | beskrivning |
---|---|
|
alternativ lästa av mysql , som inkluderar både mariadb-server och MySQL-server. |
|
alternativ lästa avmysql . Finns från och med MariaDB 10.4.6., |
|
alternativ som läses av alla MariaDB och MySQL-klientprogram, vilket inkluderar både MariaDB och MySQL-klienter. Till exempel mysqldump . |
|
alternativ som läses av alla MariaDB-klientprogram och MariaDB-servern. Detta är användbart för alternativ som uttag och port, vilket är vanligt mellan servern och klienterna. |
|
alternativ läses av alla MariaDB klientprogram., |
så här anger du vilket protokoll som ska användas när du ansluter till mysqld-servern
Följande gäller för alla MySQL-och MariaDB-kommandoradsklienter:
Du kan tvinga vilket protokoll som ska användas för att ansluta tillmysqld
– servern genom att geprotocol
alternativ ett av följande värden:tcp
,socket
,pipe
eller memory
.,
om protocol
inte anges, händer följande:
Linux/Unix
- Om
hostname
inte anges ellerhostname
ärlocalhost
används sedan Unix-uttag. Oanvända anslutningsparametrar (somport
) ignoreras. - i andra fall (
hostname
ges och det är intelocalhost
) sedan används en TCPIP-anslutning via alternativetport
.
Observera attlocalhost
är ett speciellt värde., Att använda 127.0.0.1 är inte samma sak. Den senare kommer att ansluta till mysqld-servern via tcpip.
Windows
- Om
shared-memory-base-name
anges ochhostname
inte anges ellerhostname
ärlocalhost
, kommer anslutningen att ske genom delat minne. Oanvända anslutningsparametrar (somport
) ignoreras., - Om
shared-memory-base-name
inte anges ochhostname
inte anges ellerhostname
ärlocalhost
, kommer anslutningen att ske genom windows-namngivna rör. - namngivna rör kommer också att användas om
libmysql
/libmariadb
– klientbiblioteket upptäcker att klienten inte stöder tcpip. - i andra fall används en TCPIP-anslutning via alternativet
port
.,
hur man testar vilket protokoll som används
kommandotstatus
visar information om vilket protokoll som används:
MySQL-kommandon
det finns också ett antal kommandon som kan köras inuti klienten. Observera att alla textkommandon måste vara först på rad och sluta med’; ’
Mysql_history-filen
på Unix skriver mysql-klienten ett register över exekverade uttalanden till en historyfile. Som standard heter den här filen .mysql_history
och skapas i din hemkatalog., Om du vill ange en annan fil anger du värdet för variabeln MYSQL_HISTFILEenvironment.
den .mysql_history fil bör skyddas med en restriktiv åtkomstläge eftersomkänslig information kan skrivas till den, såsom texten i SQLstatements som innehåller lösenord.
om du inte vill behålla en historikfil, ta först bort .mysql_history ifit finns, och sedan använda någon av följande tekniker:
- Ställ in mysql_histfile variabeln till/dev / null. Om du vill att den här inställningen ska träda i kraft varje gång du loggar in lägger du inställningen i en av skalets startfiler.,
- skapa .mysql_history som en symbolisk länk till / dev / null:
shell> ln -s /dev/null $HOME/.mysql_history
du behöver bara göra detta en gång.
prompt Command
kommandot prompt konfigurerar standardprompten\N >
. Strängen för att definiera prompten kan innehålla följande speciella sekvenser.
MySQL Tips
det här avsnittet beskriver några tekniker som kan hjälpa dig att användamysql
mer effektivt.,
Visa frågeresultat vertikalt
vissa frågeresultat är mycket mer läsbara när de visas vertikalt, istället för i det vanliga horisontella tabellformatet. Frågor kan visas vertikalt genom att avbryta frågan med \G istället för en semikolon. Till exempel är längre textvärden som inkluderar nya linjer ofta mycket enklare att läsa med verticaloutput:
med alternativet –safe-updates
för nybörjare är ett användbart startalternativ --safe-updates
(eller--i-am-a-dummy
, som har samma effekt)., Det är helpfulfor fall när du kanske har utfärdat en DELETE FROM tbl_name
uttalande men glömtWHERE
klausul. Normalt tar ett sådant uttalande bort alla raderfrån bordet. Med --safe-updates
kan du ta bort rowsonly genom att ange de nyckelvärden som identifierar dem. Detta hjälper till att förhindraolyckor.,
När du använder alternativet--safe-updates
utfärdar mysql följande uttalande när den ansluter till MariaDB-servern:
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
satsen har följande effekter:
- du får inte utföra en uppdatering eller radera uttalande om du inte anger en nyckelbegränsning i WHERE-klausulen eller tillhandahålla en BEGRÄNSNINGSKLAUSUL (eller båda). Till exempel:
UPDATE tbl_name SET not_key_column=val WHERE key_column=val;UPDATE tbl_name SET not_key_column=val LIMIT 1;
- servern begränsar alla stora
SELECT
resultat till 1000 rader om inte uttalandet innehåller enLIMIT
– klausul., - servern avbryter multiple-table
SELECT
uttalanden som förmodligen behöver undersöka mer än 1.000.000 radkombinationer.
mysql --safe-updates --select_limit=500 --max_join_size=10000
inaktivera mysql Auto-återansluta
om mysql-klienten förlorar sin anslutning till servern när du skickar astatement, försöker den omedelbart och automatiskt att återansluta en gång tillserver och skicka uttalandet igen., Men även om mysql lyckas ianslutning har din första anslutning avslutats och alla dina tidigare sessionobjekter och inställningar förloras: tillfälliga tabeller, autokommit-läget, anduser-definierade och sessionsvariabler. Dessutom rullar alla aktuella transaktioner tillbaka.Detta beteende kan vara farligt för dig, som i följande exempel där servern stängdes och startades om mellan första och andra uttalandenutan att du vet det:
användarvariabeln @har förlorats med anslutningen, och efter anslutningen är den odefinierad., Om det är viktigt att mysql slutar medett fel om anslutningen har förlorats kan du starta mysql-klienten med alternativet --skip-reconnect
.
Se även
- felsökning anslutningsproblem
- Readline kommandon och konfiguration