Přejít na menu

MySQL cheatsheet

Správa článků

Vyhledávání Vyhledávání
19.2.2012 18:22
,
Počet přečtení: 910
MySQL database syntax cheatsheet.

Export a import dat

Export dat (mysqldump)

mysqldump --user=USERNAME --password=PASSWORD -A > file.sql

Import dat (z dumpu)

mysql -h localhost -u ROOT -pPASSWORD --default-character-set=utf8 < file.sql

Import přímo ze gzipovaného souboru:

gunzip < dumpfile.sql.gz | mysql

Binární data MySQL

Adresář /var/lib/mysql/data obsahuje binární data MySQL. Po startu mysqld si démon natáhne data z těchto binárek (vloží si je do systémové databáze information_schema), takže pomocí této složky je možné zálohování nebo import dat.

MyISAM má data v podsložkách s názvem tabulky. V nich jsou soubory .frm (struktura tabulky), .MYD data a v .MYI indexy tabulky.

InnoDB má v podsložkách s názvem tabulky jen soubory .frm se strukturou tabulky. Data a indexy jsou uchvána přímo ve složce data v souborech idb*. Ty mají všechny stejnou velikost 4GB. (občas může být ale struktura stejná jako u MyISAM ?!?!)

Nastavení přístupu uživatele do DB

GRANT ALL ON dbname.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Removing privileges:

REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM 'phpmyadmin'@'localhost';
DROP USER 'phpmyadmin'@'localhost';

Change root password

/www/mysql/bin/mysqladmin -u root password 'sklik'

/www/mysql/bin/mysql_secure_installation

Problémy se startem mysqld - socket file, pid file

Tradiční problém.. Je potřeba si pohrát s tím souborem mysql.sock - vytvořit ho, stopnout službu, spustit ji znova... Vytvoření mysql.sock souboru a nastavení práv k němu:

cd /var/lib/mysql/
touch mysql.sock && chmod +x mysql.sock && chown mysql:mysql -R mysql.sock

Když to nepomůže:

  • mrknout do mysql logů;-)
  • několikrát zopakovat s kombinacemi service mysql stop/start :)
  • smazat nebo naopak vložit pid mysql do PID file
  • zkontrolovat oprávnění skupiny mysql (např. přidat uživatele mysql do skupiy root) pro zápis do složky s PID a sock soubory
  • hodit si mašlu

Další tipy

Konfigurák, globální proměnné

Konfigurák bývá v /etc/mysql/my.conf. Který se reálně načítá je možné zjsitit z mysqld:

/usr/sbin/mysqld --verbose

Globální proměnné (z něj) jsou při běhu ymsqld uložené v interní DB mysql, dají se číst i přepisovat takto:

SET @@global.max_allowed_packet = 500*1024*1024;
SELECT  @@global.max_allowed_packet;

Konkrétně max_allowed_packet je možná nutné nastavit i při importu pro proces mysql (tj. nestačí aby byl nastavený u mysqld):

mysql --max_allowed_packet=500M -u root -p database < dump.sql

Vygenerování CSV souboru

SELECT ... INTO OUTFILE '%s' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

Load data from CSV file

LOAD DATA INFILE 'file.csv'
  INTO TABLE t1
  (column1, @dummy, column2, @dummy, column3, ...)
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\r\n';

Náhrada textu v určitém sloupci tabulky:

update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]') where condition;

Přehlednější výpis dat z tabulek s mnoha sloupci:

SELECT * FROM tablename WHERE id = 123\G

Automaticke přepínání vertikálního režimu po celou dobu práce:

mysql --auto-vertical-output

Vytvořil 19. února 2012 v 18:23:07 mira. Upravováno 25x, naposledy 9. listopadu 2015 ve 20:14:12, mira


Diskuze ke článku

Vložení nového komentáře
*
*
*