===== MySQL ===== ==== Administracja ==== === Zalogowanie się do MySQL za pomocą mysql === $ mysql -u mysql -p mysql Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 28 Server version: 5.5.11-log PLD/Linux Distribution MySQL RPM Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> W PLD administrator MySQL’a nazywa się mysql, w innych dystrybucjach może on się nazywać inaczej np: w Debianie będzie to root === Stworzenie użytkownika na bazie danych === CREATE USER 'username'@'localhost' IDENTIFIED BY 'tajne_password'; Zmiana hasła dla użytkownika: UPDATE mysql.user SET Password=PASSWORD('nowe_tajne_password') WHERE User='username'; === Usunięcie użytkownika z bazy danych === DROP USER 'username'@'localhost'; === Stworzenie instancji na bazie danych === CREATE DATABASE dbname; === Nadanie praw użytkownikowi do bazy danych === GRANT ALL PRIVILEGES ON dbname.* TO username@'localhost'; Tu mała uwaga: w MySQL’u użytkownik identyfikowany jest za pomocą nazwa@host, gdzie nazwa@’%’ nie jest równa nazwa@localhost, więc gdy nasz użytkownik będzie logował się z zewnątrz (z poza localhost) to musimy nadać jemu do tego uprawnienia: GRANT ALL PRIVILEGES ON dbname.* TO username@'%'; Gdy pierwszy raz nadawaliśmy użytkownikowi nazwa@’%’ uprawnienia to MySQL tak naprawdę stworzył tego użytkownika i trzeba jemu nadać też hasło: UPDATE mysql.user SET Password=PASSWORD('tajne_password') WHERE User='username'; To samo tyczy się usuwania, jeśli istnieje użytkownik name@localhost i name@’%’ podczas usuwania name@localhost użytkownik name@’%’ zostanie na bazie danych! Jeśli nie chcemy tego to też musimy go usunąć: DROP USER 'username'@'%'; === Usunięcie instancji na bazie danych === DROP DATABASE dbname; === Po nadaniu uprawnień należy odświeżyć uprawnienia komendą === FLUSH PRIVILEGES; === Wyświetlenie listy użytkowników === mysql> select host, user from mysql.user; +-----------+-----------------+ | host | user | +-----------+-----------------+ | % | ocs | | 127.0.0.1 | mysql | | 127.0.0.1 | mysql_sysadmin | | localhost | | | localhost | mysql | | localhost | mysql_sysadmin | | localhost | ocs | | localhost | pong | +-----------+-----------------+ 8 rows in set (0.01 sec) mysql> === Wyświetlenie listy instancji bazodanowych === mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | ocsweb | | pong | +--------------------+ 4 rows in set (0.00 sec) mysql> ==== Backup ==== === Uprawnienia === GRANT SELECT, LOCK TABLES ON baza.* TO backup_user@localhost IDENTIFIED BY 'xyz'; FLUSH PRIVILEGES; === Sam czysty SQL === $ data=`date +%Y_%m_%d` mysqldump -u dbuser --password=tajnepass dbname > /backup/dbname_$data.sql Jeśli baza danych posiada funkcję to nalezy też dumpować – służy do tego opcja -R: mysqldump -u dbuser --password=tajnepass -R dbname > /backup/dbname_$data.sql === Z kompresją === mysqldump -u dbuser --password=tajnepass dbname | bzip2 > /backup/dbname_$data.bz2 === Bez danych – sam schemat === mysqldump -u dbuser --password=tajnepass --no-data dbname > /backup/dbname_$data.sql === Same dane – bez schematu === mysqldump -u dbuser --password=tajnepass --skip-triggers --compact --no-create-info dbname > /backup/dbname_$data.sql === Wszystkie bazy === mysqldump -u mysql --password=tajnepass --all-databases > /backup/dump_$data.sql === Odtwarzanie bazy danych === mysql -u dbuser --password=tajnepass dbname < /backup/dump.sql ==== Użytkowanie ==== === Pokazanie struktury bazy danych === mysql> show tables; +-------------------------+ | Tables_in_ocsweb | +-------------------------+ | accesslog | | accountinfo | | bios | | blacklist_macaddresses | | blacklist_serials | . . . | slots | | softwares | | softwares_name_cache | | sounds | | storages | | subnet | | tags | | videos | | virtualmachines | +-------------------------+ 54 rows in set (0.00 sec) mysql> === Pokazanie struktury tabeli === mysql> desc files; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | NAME | varchar(150) | NO | PRI | NULL | | | VERSION | varchar(100) | NO | PRI | NULL | | | OS | varchar(80) | NO | PRI | NULL | | | CONTENT | longblob | NO | | NULL | | +---------+--------------+------+-----+---------+-------+ 4 rows in set (0.02 sec) mysql>