Po zainstalowaniu MySQL-a głównie korzystamy z 4 plików binarnych:
- mysql - program klienta do nawiązywania połączenia z serwerem
- mysqld/mysqld_safe - główny program do uruchomienia serwera
- mysqldump - export danych z wybranej bazy danych/tabeli
Ale dostępne (w katalogu bin pod katalogiem głównym) są jeszcze inne programy dla celów administracyjnych i użytkowych.
Aby znaleźć katalog główny, zaloguj się na serwer i wyszukaj zmienną basedir:
mysql (root@127.0.0.1:(none))> show variables like 'basedir';
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| basedir | /usr/local/mysql5.5 |
+---------------+---------------------+
1 row in set (0.08 sec)
W katalogu głównym znajdziecie dodatkowe programy, które mogą się okazać przydatne i które teraz opiszę. Może się okazać, że pod ręką mamy pomocne narzędzia, o których nic nie wiemy:
- innochecksum - wyświetla informację o checksumie do plików InnoDB. Program ten może być użyty do kontroli przenoszenia/kopiowania plików.
[05:16:46 root@- bin] sudo ./innochecksum -d /home/mysql/mysql5.5/myisam/ela_db/test.ibd
file /home/mysql/mysql5.5/myisam/ela_db/test.ibd = 98304 bytes (6 pages)...
checking pages in range 0 to 5
page 0: log sequence number: first = 2702026452; second = 2702026452
page 0: old style: calculated = 358136944; recorded = 358136944
page 0: new style: calculated = 610648785; recorded = 610648785
page 1: log sequence number: first = 2702022632; second = 2702022632
page 1: old style: calculated = 3782708855; recorded = 3782708855
page 1: new style: calculated = 472948545; recorded = 472948545
page 2: log sequence number: first = 2702026452; second = 2702026452
page 2: old style: calculated = 3864827530; recorded = 3864827530
page 2: new style: calculated = 1336201095; recorded = 1336201095
page 3: log sequence number: first = 2702026452; second = 2702026452
page 3: old style: calculated = 3221959309; recorded = 3221959309
page 3: new style: calculated = 666523661; recorded = 666523661
page 4: log sequence number: first = 0; second = 0
page 4: old style: calculated = 1371122432; recorded = 0
page 4: new style: calculated = 1575996416; recorded = 0
page 5: log sequence number: first = 0; second = 0
page 5: old style: calculated = 1371122432; recorded = 0
page 5: new style: calculated = 1575996416; recorded = 0
- myisamchk - program obłóguje pliki tabel MyISAM. Może zwrócić informację o statystykach, sprawdzić czy nie ma błędów, naprawić lub zoptymalizować.
[06:11:36 root@nazgul bin] ./myisamchk --description /home/mysql/mysql5.5/myisam/ela_db/*.MYI
MyISAM file: /home/mysql/mysql5.5/myisam/ela_db/test_myisam.MYI
Record format: Packed
Character set: utf8_general_ci (33)
Data records: 7 Deleted blocks: 0
Recordlength: 788
table description:
Key Start Len Index Type
[05:59:58 root@nazgul bin] ./myisamchk -i /home/mysql/mysql5.5/myisam/ela_db/*.MYI
Checking MyISAM file: /home/mysql/mysql5.5/myisam/ela_db/test_myisam.MYI
Data records: 7 Deleted blocks: 0
myisamchk: warning: 1 client is using or hasn't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check record links
Records: 7 M.recordlength: 46 Packed: 0%
Recordspace used: 97% Empty space: 2% Blocks/Record: 1.00
Record blocks: 7 Delete blocks: 0
Record data: 327 Deleted data: 0
Lost space: 10 Linkdata: 27
MyISAM-table '/home/mysql/mysql5.5/myisam/ela_db/test_myisam.MYI' is usable but should be fixed
User time 0.00, System time 0.00
Maximum resident set size 1320, Integral resident set size 0
Non-physical pagefaults 414, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 2, Involuntary context switches 2
Stworzyłam tabelę service_myisam z 6997 rekordami.
[06:21:08 root@nazgul bin] ./myisamchk -i /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Checking MyISAM file: /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Data records: 6997 Deleted blocks: 0
myisamchk: warning: 1 client is using or hasn't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check record links
Records: 6997 M.recordlength: 101 Packed: 0%
Recordspace used: 99% Empty space: 0% Blocks/Record: 1.00
Record blocks: 6997 Delete blocks: 0
Record data: 707608 Deleted data: 0
Lost space: 5459 Linkdata: 26233
MyISAM-table '/home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI' is usable but should be fixed
User time 0.00, System time 0.00
Maximum resident set size 2036, Integral resident set size 0
Non-physical pagefaults 596, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 2, Involuntary context switches 6
Na wszystkich rekordach wykonałam update i usunełam część z wierszy: 2 razy po 1000 rekordów. Po wykonaniu tej operacji:
[06:37:11 root@nazgul bin] ./myisamchk -i /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Checking MyISAM file: /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Data records: 4997 Deleted blocks: 2000
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check record links
Records: 4997 M.recordlength: 98 Packed: 0%
Recordspace used: 99% Empty space: 44% Blocks/Record: 1.00
Record blocks: 4997 Delete blocks: 2000
Record data: 491470 Deleted data: 225228
Lost space: 3918 Linkdata: 18684
User time 0.00, System time 0.00
Maximum resident set size 2028, Integral resident set size 0
Non-physical pagefaults 594, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 2, Involuntary context switches 8
[06:39:38 root@nazgul bin] ll /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
-rw-rw---- 1 mysql mysql 1024 02-17 06:38 /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Optymalizacja tabeli:
[06:44:23 root@nazgul bin] ./myisamchk --recover /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
- recovering (with keycache) MyISAM-table '/home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI'
Data records: 4997
Sprawdzenie:
[06:47:38 root@nazgul bin] ./myisamchk -i /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Checking MyISAM file: /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Data records: 4997 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check record links
Records: 4997 M.recordlength: 98 Packed: 0%
Recordspace used: 99% Empty space: 0% Blocks/Record: 1.00
Record blocks: 4997 Delete blocks: 0
Record data: 491470 Deleted data: 0
Lost space: 3918 Linkdata: 18684
User time 0.00, System time 0.00
Maximum resident set size 1812, Integral resident set size 0
Non-physical pagefaults 540, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 2, Involuntary context switches 4
Zachęcam do zaznajomienia się ze wszystkimi opcjami. Pozwalaja one wymusić oprtowanie danych po podanym kluczu, sortowanie i analizę indexów.
Ważne abyśmy nasze operacje wykonywanie gdy inne programy nie mają dostepu do tabel, na których pracujemy (np. przy wyłączonym serwerze). Jeśli jednak jest to dla nas zbyt duzy problem, możemy się polegać na poleceniu CHECK TABLE (Odsyłam do dokumentacji
tutaj).
- myisam_ftdump - Wyświetla informację o index-e FULLTEXT w tabelach MyISAM. O to klika przykładów dla tabeli test_myisam:
CREATE TABLE `test_myisam` (
`c1` int(11) NOT NULL DEFAULT '0',
`c2` varchar(255) DEFAULT NULL,
`c3` text,
`c4` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`c1`),
FULLTEXT KEY `idx_ft` (`c3`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
W której mamy klika wierszy:
mysql (root@127.0.0.1:ela_db)> select * from test_myisam order by c1 desc;
+------+--------------+-------------------------------+---------------------+
| c1 | c2 | c3 | c4 |
+------+--------------+-------------------------------+---------------------+
| 7 | easdfsdfssss | bxcbvx to jest cos innego | 2014-02-17 06:03:22 |
| 6 | easdfsdfssss | bxcbvx to jest cos innego | 2014-02-17 07:15:03 |
| 5 | easdfsdfssss | bxcbvx to jest cos innego | 2014-02-17 07:14:49 |
| 4 | easdfsdfssss | bxcbvx to jest cos innego | 2014-02-17 06:03:22 |
| 3 | essss | 2014-02-17 06:00:46 | 2014-02-17 07:14:29 |
| 2 | easdfsdfssss | bxcbvx to jest cos innffffego | 2014-02-17 06:03:22 |
| 1 | essss | to jest cos innego | 2014-02-17 06:03:22 |
+------+--------------+-------------------------------+---------------------+
7 rows in set (0.00 sec)
Informacje o index-e (podaję, jako argument, ścieżkę do tabeli bo mam niestandardową ścieżkę do katalogu z danymi. Ostatni argument opowiada numerze index-u - licząc od 0):
[07:03:52 root@nazgul bin] ./myisam_ftdump /home/mysql/mysql5.5/myisam/ela_db/test_myisam 1
Total rows: 7
Total words: 18
Unique words: 5
Longest word: 10 chars (innffffego)
Median length: 6
Average global weight: -0.008164
Most common word: 6 times, weight: -1.791759 (jest)
[07:17:16 root@nazgul bin] ./myisam_ftdump -c /home/mysql/mysql5.5/myisam/ela_db/test_myisam 1
1 1.7917595 2014
5 -0.9162907 bxcbvx
5 -0.9162907 innego
1 1.7917595 innffffego
6 -1.7917595 jest
[07:20:06 root@nazgul bin] ./myisam_ftdump -l /home/mysql/mysql5.5/myisam/ela_db/test_myisam 1
4: 7 38.89% 7 38.9%
6: 10 55.56% 17 94.4%
10: 1 5.56% 18 100.0%
[07:20:26 root@nazgul bin] ./myisam_ftdump /home/mysql/mysql5.5/myisam/ela_db/test_myisam 0
Key 0 in table /home/mysql/mysql5.5/myisam/ela_db/test_myisam is not a FULLTEXT key
- myisamlog -Podgląd logów tabel MyISAM. Wymaga aby serwer działał w trybie debug i aby logi tabel MyISAM były włączone.
- myisampack - narzędzie do kompresji tabel MyISAM. Kompresuje każdą kolumnę osobno. Jest to efektywne gdy przy selekcie wyciagamy pojedyncze kolumny. Aby zdekompresować tabelę, używamy programu myisamchk z opcją --unpack.
[07:34:01 root@nazgul bin] ./myisampack /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYI
Compressing /home/mysql/mysql5.5/myisam/ela_db/services_myisam.MYD: (4997 records)
- Calculating statistics
- Compressing file
53.19%
- my_print_defaults - wyświetla opcje, które są przypisane do grupy. Domyślnie opcje są czytane z następujących plików konfiguracyjnych w tej kolejności: /etc/mysql/my.cnf, /etc/my.cnf, ~/.my.cnf. Ponieważ mój serwer działa na innych parametrach i czyta z innego pliku, muszę podać do niego ścieżkę:
[06:52:30 root@- bin] my_print_defaults --defaults-file=/etc/my5.5.cnf client
--port=3309
--socket=/tmp/mysql5.5.sock
--default-character-set=utf8
[06:52:59 root@- bin] my_print_defaults --defaults-file=/etc/my5.5.cnf mysqld
--user=mysql
--skip-name-resolve
--innodb_file_per_table
--skip-external-locking
--report-port=3309
--tmpdir=/home/mysql/mysql5.5/mysqltmp
--event_scheduler=0
--pid-file=/home/mysql/mysql5.5/mysql.pid
--socket=/tmp/mysql5.5.sock
--datadir=/home/mysql/mysql5.5/myisam
--port=3309
--server-id=1
--character-set-server=utf8
--back_log=24
--key_buffer=16M
--max_allowed_packet=16M
--table_cache=4096
--sort_buffer=512k
--read_rnd_buffer_size=512k
--read_buffer_size=512k
--thread_cache=256
--thread_concurrency=10
--myisam_sort_buffer_size=8M
--max_connections=50
--max_tmp_tables=4096
--wait_timeout=3600
--query_cache_type=1
--query_cache_size=512M
--auto_increment_offset=1
--auto_increment_increment=2
--log-output=file
--general_log=1
--general_log_file=/home/mysql/mysql5.5/log/mysql.log
--log_error=/home/mysql/mysql5.5/log/mysql.err
--log-warnings=1
--long_query_time=1
--slow_query_log=1
--slow_query_log_file=/home/mysql/mysql5.5/slow.log
--log_queries_not_using_indexes=1
--log-bin=/home/mysql/mysql5.5/replication/binlog
--binlog-format=ROW
--relay-log=/home/mysql/mysql5.5/replication/relay-bin
--innodb_data_home_dir=/home/mysql/mysql5.5/innodb/
--innodb_data_file_path=ibdata/ibdata1:50M:autoextend
--innodb_log_group_home_dir=/home/mysql/mysql5.5/innodb/iblogs
--innodb_flush_log_at_trx_commit=2
--innodb_fast_shutdown
--innodb_lock_wait_timeout=30
--innodb_log_files_in_group=3
--innodb_thread_concurrency=10
--innodb_max_dirty_pages_pct=30
--innodb_autoextend_increment=32
- mysqlaccess - Sprawdza prawa dostępu dla kombinacji: host, nazwa użytkownika i nazwa bazy danych. Niestety program będzie działać tylko na standardowym porcie 3306.
[07:50:32 root@nazgul bin] ./mysqlaccess --user=root --password=root --host=127.0.0.1 --db=ela_db --brief
mysqlaccess Version 2.06, 20 Dec 2000
By RUG-AIV, by Yves Carlier (Yves.Carlier@rug.ac.be)
Changes by Steve Harvey (sgh@vex.net)
This software comes with ABSOLUTELY NO WARRANTY.
Password for MySQL superuser root:
Sele Inse Upda Dele Crea Drop Relo Shut Proc File Gran Refe Inde Alte Show Supe Crea Lock Exec Repl Repl Crea Show Crea Alte Crea Even Trig Ssl_ Ssl_ X509 X509 Max_ Max_ Max_ Max_ | Host,User,DB
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- + --------------------
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ? ? ? ? 0 0 0 0 | 127.0.0.1,root,ANY_NEW_DB
BUGs can be reported by email to bugs@mysql.com
- mysqladmin - klient dla operacji administracyjnych. Przykładowe polecenia to: tworzenie (create) i usuwanie (drop) baz danych, zabijać działające wątki (kill), zmieniać hasła, sprawdzać status serwera lub czy w ogóle jest dostępny (ping) i inne.
[08:12:22 root@nazgul bin] ./mysqladmin --host=127.0.0.1 -P3309 -uroot -proot ping status processlist
mysqld is alive
Uptime: 3667 Threads: 3 Questions: 46 Slow queries: 12 Opens: 41 Flush tables: 2 Open tables: 2 Queries per second avg: 0.012
+----+-------------+-----------------------+--------+-------------+------+-----------------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------------------+--------+-------------+------+-----------------------------------------------------------------------------+------------------+
| 1 | system user | | | Connect | 3665 | Waiting for master to send event | |
| 2 | system user | | | Connect | 3633 | Slave has read all relay log; waiting for the slave I/O thread to update it | |
| 3 | replication | 192.168.100.166:39523 | | Binlog Dump | 3652 | Master has sent all binlog to slave; waiting for binlog to be updated | |
| 8 | root | 127.0.0.1:35420 | ela_db | Sleep | 894 | | |
| 12 | root | 127.0.0.1:35424 | | Query | 0 | | show processlist |
+----+-------------+-----------------------+--------+-------------+------+-----------------------------------------------------------------------------+------------------+
- mysqlbinlog - Pokazuję zawartość binlog-ów. Dla przykładowego polecenia insert:
mysql (root@127.0.0.1:ela_db)> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000023 | 1336 | | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql (root@127.0.0.1:ela_db)> insert into test_myisam (c1,c2,c3,c4) values (8,'easdfsdfssss', 'bxcbvx to jest cos innffffego',now());
Query OK, 1 row affected (0.00 sec)
mysql (root@127.0.0.1:ela_db)> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000023 | 1644 | | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Podgląd w binlog-u:
[08:26:57 root@nazgul bin] ./mysqlbinlog --start-position=1336 --base64-output=DECODE-ROWS --verbose /home/mysql/mysql5.5/replication/binlog.000023
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 1336
#140217 8:20:08 server id 1 end_log_pos 1419 Query thread_id=8 exec_time=0 error_code=0
SET TIMESTAMP=1392646808/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=2, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;
SET @@session.time_zone='SYSTEM'/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 1419
# at 1477
#140217 8:20:08 server id 1 end_log_pos 1477 Table_map: `ela_db`.`test_myisam` mapped to number 35
#140217 8:20:08 server id 1 end_log_pos 1560 Write_rows: table id 35 flags: STMT_END_F
### INSERT INTO ela_db.test_myisam
### SET
### @1=8
### @2='easdfsdfssss'
### @3='bxcbvx to jest cos innffffego'
### @4=1392646808
# at 1560
#140217 8:20:08 server id 1 end_log_pos 1644 Query thread_id=8 exec_time=0 error_code=0
SET TIMESTAMP=1392646808/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
- mysqlcheck - program do utrzymywania serwera MySQL. Sprawdzanie tabel, analiza kluczy, optymalizacja tabel i naprawianie tabel.
- mysql_client_test - program do testowania API klienta MySQL-a gdzie testy są napisane w specjalnym języku (zobacz dokumentację tutaj).
- mysql_client_test_embedded - jest tym samym co mysql_client_test ale używany jest do tego serwer osadzony.
- mysql_config - wyświetla informację o kompilacji klienta i połączeniu jego do MySQL-a
- mysql_convert_table_format - perl-owy skrypt do konwersji engin-u tabeli.
- mysqld_multi - uruchomienie kilku serwerów pod różnymi portami i plikami socket. Aby zobaczyć przykładowy plik konfiguracyjny wykonaj polecenie: ./mysqld_multi --example
- mysqldumpslow - Pasuje i podsumowywuje zapytania, które zostały zapisane w slow logach. Aby wykonać podsumowanie, program podmienia wszystkie liczby na N, a stringi na S. Udostępnia opcje sortowania po np. czasie trwania.
[10:12:32 root@nazgul bin] ./mysqldumpslow -s 'c' /home/mysql/mysql5.5/slow.log | head -n 6
Reading mysql slow query log from /home/mysql/mysql5.5/slow.log
Count: 4 Time=0.00s (0s) Lock=0.00s (0s) Rows=7.0 (28), root[root]@[127.0.0.1]
select * from test_myisam
Count: 3 Time=0.00s (0s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@[127.0.0.1]
update test_myisam set c1 = N where c1 = N limit N
- mysqlhotcopy - perl-owy skrypt do kopiowania tabeli/bazy danych MyISAM lub Archive. Program lokuje tabele a następnie kopiuje pliki tabel. Kopiowanie może odbywać się tylko w obrębie tej samej maszyny, na której działa główna baza.
- mysqlimport - program do importu danych z pliku. W podanym przykładzie importuje dane z pliku CSV, gdzie każdy nowy rekord danych to jedna linia pliku. Dane dla kolumn (zdefiniowanych pod opcją --columns) są oddzielone przecinkiem. Zanim proces importu się zacznie, chce aby tabela była wyczyszczona (opcja --delete). Plik CSV znajduje się na maszynie, na której działa serwer MySQL, dlatego używam opcji --local. Chcę aby pierwsza linia była pominięta (bo jest to nagłówek), dlatego dodałam opcję --ignore-lines. Plik CSV, który importuje musi się nazywać (bez rozszerzenia) jak tabelka, do której chce zaimportować dane.
∴ mysqlimport --fields-optionally-enclosed-by='"' --fields-terminated-by=, --lines-terminated-by="\n" -uroot -proot --delete --local --columns=fake_id,comment,ean_code,price,items --ignore-lines=1 reclame_space restore_test.csv
reclame_space.restore_test: Records: 500000 Deleted: 0 Skipped: 0 Warnings: 499999
- mysql_plugin - program do obsługi plugin-ów. Lista zainstalowanych plugin-ów jest dostępna przy poleceniu SHOW PLUGINS;
- mysql_secure_installation - prosty skrypt do zmian bezpieczeństwa: zmiana hasła dla root-a, usunięcie anonimowego konta, wyłączenie możliwości zdalnego logowania się przez użytkownika root, usunięcie testowej bazy danych.
- mysql_setpermission - perl-owy skrypt do wstawiania praw dostępu.
∴ mysql_setpermission --user=root --password=root --host=127.0.0.1 --port=3307
######################################################################
## Welcome to the permission setter 1.4 for MySQL.
## made by Luuk de Boer
######################################################################
What would you like to do:
1. Set password for an existing user.
2. Create a database + user privilege for that database
and host combination (user can only do SELECT)
3. Create/append user privilege for an existing database
and host combination (user can only do SELECT)
4. Create/append broader user privileges for an existing
database and host combination
(user can do SELECT,INSERT,UPDATE,DELETE)
5. Create/append quite extended user privileges for an
existing database and host combination (user can do
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,
LOCK TABLES,CREATE TEMPORARY TABLES)
6. Create/append full privileges for an existing database
and host combination (user has FULL privilege)
7. Remove all privileges for for an existing database and
host combination.
(user will have all permission fields set to N)
0. exit this program
Make your choice [1,2,3,4,5,6,7,0]: 0
We hope we can help you next time
- mysqlshow - program zwraca dla:
- bazy danych - listę tabel
- tabeli - opis tabeli z opisami wszystkich kolumn
- kolumny - jej opis
- jeśli nie podamy żadnego z powyższych elementów, zwracana jest lista baz danych
[08:04:13 root@nazgul bin] ./mysqlshow --host=127.0.0.1 --port=3309 --user=root -proot ela_db test
Database: ela_db Table: test
+-------+--------------+-----------------+------+-----+-------------------+-----------------------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+--------------+-----------------+------+-----+-------------------+-----------------------------+---------------------------------+---------+
| c1 | int(11) | | YES | | | | select,insert,update,references | |
| c2 | varchar(255) | utf8_general_ci | YES | | | | select,insert,update,references | |
| c3 | text | utf8_general_ci | YES | | | | select,insert,update,references | |
| c4 | timestamp | | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | select,insert,update,references | |
+-------+--------------+-----------------+------+-----+-------------------+-----------------------------+---------------------------------+---------+
- mysqlslap - program do emulacji obciążenia. Np. chce sprawdzić jakie jest obciążenie przy 20 klientów wykonuje zapytanie (w tym przypadku INSERT) po 50 razy
[08:29:14 root@nazgul bin] ./mysqlslap --host=127.0.0.1 -uroot -proot -P3309 \
> --iterations=20 --query="insert into test (c1, c2,c3,c4) values (rand(), 'test ', 'my test', now());" \
> --concurrency=50 --no-drop
Benchmark
Average number of seconds to run all queries: 0.435 seconds
Minimum number of seconds to run all queries: 0.008 seconds
Maximum number of seconds to run all queries: 1.402 seconds
Number of clients running queries: 50
Average number of queries per client: 1
- mysqltest - Program wykołuje test case-y na serwerze MySQL-a. Zazwyczaj wywołuje się ten program przy pomocy perl-owego skryptu, który możecie znaleźć pod BASEDIR/mysql-test/mysql-test-run.pl
- mysql_tzinfo_to_sql - ładuje tabele time zone. Pliki mogą się znajdować w katalogu: /usr/share/zoneinfo. Program czyta pliki systemowe o strefach czasowych i generuje zapytania SQL.
[10:51:25 ela@nazgul bin] ./mysql_tzinfo_to_sql
Usage:
./mysql_tzinfo_to_sql timezonedir
./mysql_tzinfo_to_sql timezonefile timezonename
./mysql_tzinfo_to_sql --leap timezonefile
[11:09:13 iloop@nazgul bin] ./mysql_tzinfo_to_sql /usr/share/zoneinfo/Poland CES
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
SET @time_zone_id= LAST_INSERT_ID();
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('CES', @time_zone_id);
INSERT INTO time_zone_transition (Time_zone_id, Transition_time, Transition_type_id) VALUES
(@time_zone_id, -1717032240, 2)
,(@time_zone_id, -1693706400, 1)
,(@time_zone_id, -1680483600, 2)
...
,(@time_zone_id, 2140045200, 9)
;
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
(@time_zone_id, 0, 5040, 0, 'WMT')
,(@time_zone_id, 1, 7200, 1, 'CEST')
,(@time_zone_id, 2, 3600, 0, 'CET')
,(@time_zone_id, 3, 7200, 1, 'CEST')
,(@time_zone_id, 4, 3600, 0, 'CET')
,(@time_zone_id, 5, 10800, 1, 'EEST')
,(@time_zone_id, 6, 7200, 0, 'EET')
,(@time_zone_id, 7, 7200, 0, 'EET')
,(@time_zone_id, 8, 7200, 1, 'CEST')
,(@time_zone_id, 9, 3600, 0, 'CET')
;
- mysql_upgrade - sprawdza wszystkie tabelę we wszystkich bazach danych czy są kompatybilne z obecną wersją serwera.
- perror - wyświetla informację o błędzie, którego kod jest podawany jako argument
[07:03:00 root@nazgul bin] ./perror 13
OS error code 13: Permission denied
[07:03:03 root@nazgul bin] ./perror 1046
MySQL error code 1046 (ER_NO_DB_ERROR): No database selected