Spis treści

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>