воскресенье, 30 января 2011 г.

MySQL, часто используемые команды (базовые)

Для сисадмина иногда необходимо "поковырять" базы данных.
У меня эта необходимость возникаетне так часто, поэтому часто забываю синтаксис запросов и некоторые команды, а это маленькая памятка..
Подсоеднение к mysqld

mysql -hхост-u пользователь -pпароль
Посмотреть, какие есть БД Примечание: все введенные команды должны заканчиваться ;

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.01 sec)
Выбор базы

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
Вывод списка таблиц

mysql> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)
Просмотр прав доступа

mysql> select user,host,password from user;
+---------+-----------+-------------------------------------------+
| user    | host      | password                                  |
+---------+-----------+-------------------------------------------+
| root    | localhost | *C142FB215B6E05B7C134B1A653AD4B455157FD79 |
| root    | FreeBDSM  | *C142FB215B6E05B7C134B1A653AD4B455157FD79 |
| root    | 127.0.0.1 | *C142FB215B6E05B7C134B1A653AD4B455157FD79 |
+---------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
Установка нового проля для всех учетных хаписей root

mysql> UPDATE user SET Password=PASSWORD ('NEWpasword') WHERE user='root';
Удаление пользователя без имени (было и такое)

mysql> delete from user where user='';
Создаем пользователя user с паролем stupid с доступом с ip адресов localhost и ip.add.re.ss

mysql> INSERT INTO user (Host,User, Password) VALUES('localhost','user',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User, Password) VALUES('ip.add.re.ss','user',PASSWORD('stupid'));
Дать полные права пользователю your_mysql_name на базу your_db

mysql> GRANT ALL ON your_db.* TO your_mysql_name;
Просмотр структуры таблицы

mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

Field - имя столбца, Type - тип данных, к которому относится этот столбец, NULL указывает, может ли данный столбец содержать значения NULL, Key - является ли этот столбец индексным, и, наконец, Default указывает значение данного столбца по умолчанию.
Добавление пользователя(monty) с полными правами к его базе(montydb) и возмможностью подсоединения с localhost, более подробно здесь

mysql> GRANT ALL PRIVILEGES ON montydb.* TO monty@localhost
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
Создание таблицы, с автоинкриментом и PRIMARY KEY

mysql> CREATE TABLE tariff_groups (num tinyint(2) NOT NULL AUTO_INCREMENT, PRIMARY KEY (num), name TINYTEXT NOT NULL);
Изменение структуры таблицы. Поменяем тип данных и установим NOT NULL

mysql> ALTER TABLE tariff_groups CHANGE name name VARCHAR(24) NOT NULL;
Вставляем значение в таблицу

INSERT INTO tariff_groups VALUES ('1','Local network');

Кодировки 
Взято здесь
Установка кодировок по умолчанию в файле my.cnf

[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
init-connect='SET NAMES utf8;'
collation-server=utf8_general_ci

[mysql]
default-character-set=utf8
Вывод используемых кодировок

mysql> show variables like 'char%';
Также можно выполнить команду после конекта

mysql> set names 'utf8';
Просмотр кодировки для БД (кодировка наледуется для таблиц этой же базы)

mysql> show create database yourdatabase;
+-------------+----------------------------------------------------------------------+
| Database    | Create Database                                                      |
+-------------+----------------------------------------------------------------------+
| yourdatabase | CREATE DATABASE `yourdatabase` /*!40100 DEFAULT CHARACTER SET utf8 */ | 
+-------------+----------------------------------------------------------------------+
1 row in set (0.00 sec)



Справочное руководство по MySQL

1 комментарий: