Podešavanja
Lista podešavanja i njihove vrednosti
mysqld --verbose --help
Upravljanje korisnicima
Lista korisnika
mysql> SELECT User,Host FROM mysql.user;
Lista privilegija za korisnika root@localhost
mysql> SHOW GRANTS FOR root@localhost;
Kreiranje novog korisnika
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
Dodajemo izabrane privilegije za sve tabele baze podataka dbname korisniku 'user'@'localhost'
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX
ON dbname.* TO 'user'@'localhost';
Dodajemo sve privilegije za sve tabele baze podataka dbname korisniku 'user'@'localhost'
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
Brisanje privilegija korisnika 'user'@'localhost' za bazu podataka dbname:
mysql> REVOKE ALL ON dbname.* FROM 'user'@'localhost';
Brisanje korisnika
mysql> DROP USER user@localhost;
Osvežavanje privilegija
mysql> FLUSH PRIVILEGES;
Novi lozinka za root
$ mysqladmin -uroot password 'secret'
Upravljanje bazom podataka
Kreiranje baze podataka
mysql> CREATE DATABASE dbname COLLATE utf8_general_ci;
Kreiranje baze podataka iz konzole
$ mysqladmin -u root -p create dbname
Brisanje baze podataka iz konzole
mysqladmin -u root -p drop dbname
Maatkit - proširene mogućnosti MySQL-a
Adminer – praktična zamena za phpMyAdmin, samo jedan php fajl.
Ostale SQL komande
Zamena određenog podniza u polju drugim podnizom
mysql> UPDATE table SET field=replace(field, 'original string', 'new string');
Umetanje podataka iz jedne tabele u drugu
mysql> INSERT INTO table1 (fld1, fld2) SELECT table2.fld1, table2.fld2 FROM table2 WHERE table2.fld2 > 7;
Pregled strukture tabele blog_posts
mysql> DESCRIBE blog_posts;
Pregled SQL upita za kreiranje strukture tabele blog_posts
mysql> SHOW CREATE TABLE blog_posts;
Monitoring i statistika
Lista svih baza podataka
mysql> SHOW DATABASES;
Lista svih tabela u izabranoj bazi podataka
mysql> SHOW TABLES;
Statistika rada servera
mysql> SHOW GLOBAL STATUS;
- Mytop – jednostavno sredstvo za monitoring MySQL-a
- Remote MySQL Performance And Query Monitoring
- Install Innotop to Monitor MySQL Server Performance
- Install Mtop (MySQL Database Server Monitoring)
- Check The Number Of MySQL Open Database Connections on Linux Or Unix-like Server
Optimizacija baza podataka
Komandom mysqlcheck možete izvršiti proveru, optimizaciju i ispravku grešaka.
Provera na greške baze podataka dbname
$ mysqlcheck -p dbname
Obnova i optimizacija svih baza podataka
$ mysqlcheck -Aor -p
Opis argumenata
-p – koristi lozinku
-A – proveri sve baze podataka
-r – popravi bazu podataka
-o – optimizuj bazu podataka
Skripta za jednostavnu optimizaciju baze podataka, možete je dodati u cron da se izvršava jednom dnevno
mysqlcheck --repair --analyze --optimize --all-databases --auto-repair -u root -pSECRET
Instalirajte mysqltuner, koji prikazuje statistiku o radnom MySQL serveru i daje korisne savete za optimizaciju.
cd /usr/local/bin wget http://mysqltuner.pl/mysqltuner.pl chmod +x mysqltuner.pl
Pokrenite
/usr/local/bin/mysqltuner.pl
Prilikom pokretanja skripta će pitati za korisničko ime i lozinku za root. Nakon uspešne autentifikacije biće prikazana statistika i razni saveti za izmenu MySQL konfiguracionog fajla.
Promena prompta
У ~/.my.cnf додајемо
[client] default-character-set = 'utf8' pager = 'less -n -i -S' prompt = '\u@\h [\d] > ' user = 'root' password = 'secret'
Ове поставке су пронађене на просторима интернета, али нажалост, не памтим аутора. Ове поставке раде следеће
- подразумева се да се поставља кодирање по подразумеваном utf8
- користи се less за приказ резултата упита
- мења се редни број позива, \u - корисник, \h - хост, \d - база података
- наводи се логин и лозинка за mysql-конзолу, удобно при развоју на локалном серверу
Дамп (резервна копија)
Дамп базе података
$ mysqldump -uroot -p dbname > dump.sql
Дамп изабраних база
$ mysqldump -uroot -p -B dbname1 dbname2 > dump.sql
Дамп свих база
$ mysqldump -uroot -p -A > dump.sql
Дамп само структуре, без података
$ mysqldump -uroot -p --no-data dbname > database.sql
Друге опције
--add-drop-table - додаје команду DROP TABLE пре сваке команде CREATE TABLE
--add-locks - додаје команду LOCK TABLES пре извршења и UNLOCK TABLE након извршења сваког дампа табеле
--no-create-db, -n - не додавати команду CREATE DATABASE, која се додаје коришћењем параметара --databases и --all-databases
--no-data, -d - дампати само структуру табела
--no-create-info, -t - не креирати команду CREATE TABLE
--skip-comments - не изводити коментаре.
--compact - користити компактан формат
--create-options - додаје додатне информације о табели у команду CREATE TABLE: тип, AUTO_INCREMENT вредност итд. Нежељене опције могу се уклонити помоћу sed.
--extended-insert, -e - применити команду INSERT са вишеструким синтаксисом (повећава компакност и брзину уноса)
--tables - дампати само табеле из листе која следи после овог параметра, раздвајач је размак
Примена дампа
$ mysql -uroot -p dbname1 < dump.sql
Почевши од верзије 5.5.30 при дампивању могуће је добити следеће поруке
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly. или mysqldump: Couldn't execute 'show events': Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)
Да би се ово исправило, потребно је ажурирати базе и поново покренути MySQL
sudo mysql_upgrade -u root -h localhost -p --verbose sudo service mysql restart
Промена кодирања за текстуално поље
Листа поља за табелу table са информацијама о пољу, укључујући и кодирање поља
SHOW FULL COLUMNS FROM table;
Мењамо charset за поље field
ALTER TABLE table MODIFY field VARCHAR(255) CHARACTER SET utf8;
Промена кодирања при увозу из дампа
Одређивање кодирања фајла
file --mime-encoding dump.sql
Конвертовање из кодирања latin1 у utf8
mysqldump --add-drop-table -uroot -p dbname | replace CHARSET=latin1 CHARSET=utf8 | iconv -f latin1 -t utf8 | mysql -uroot -p dbname
Враћање root-лозинке
$ service mysqld stop $ mysqld_safe --skip-grant-tables & $ mysql mysql> UPDATE mysql.user SET Password=PASSWORD('secret') WHERE User='root'; mysql> FLUSH PRIVILEGES; $ service mysqld restart
