Создание базы данных

Вид материалаДокументы

Содержание


Create database
[with grant option]
Create temporary tables
Grant option
Lock tables
Show databases
GRANT ALL ON samp_db.* to ‘horhe’@’localhost’ identified by ‘123’
Подобный материал:

Создание базы данных



Разделяют несколько этапов создания базы данных:
  1. создание (инициализация) базы
  2. Создание таблиц
  3. Взаимодействие с таблицами посредством операций вставки, выборки, модификации или удаления данных.


Для создания базы данных необходимо подключится к серверу.


Для подключения к серверу используется окно терминала (консоль), где необходимо ввести команду для подключения к серверу:

mysql –h host_name –p –u user_name





Например: mysql –h nvtc.ee -p –u irinaq

Естественно, что заранее должна быть создана условная запись, включающая имя пользователя и пароль. Необходимо, чтобы не был перекрыт доступ к серверу по соответствующему протоколу, в котором работает консоль и происходит соединение.

При подключении к базе данных на сервере, через консоль на этом же сервере, вводить адрес –h host_name не обязательно.


Ключи:

-h –имя сервера, к которому хотите подключиться

-u – имя пользователя, зарегистрированное в СУБД MySQL.

-p - пароль





При соединении с базой данных, установленной локально, часто используется имя пользователя root наделенное максимальными привелегиями, однако лучше использовать определенные имена пользователя и пароли в целях безопасности данных даже на локальной машине.


Для выхода из соединения с сервером используется команда quit.





Для создания новой базы данных необходимо ввести команду CREATE DATABASE:

CREATE DATABASE db_name;

Например: mysql> CREATE DATABASE new_dbase;





После чего можно переходить к созданию таблиц, выбрав созданную данную базу из имеющихся на данном сервере.


Для выбора базы следует использовать команды:


mysql> use db_name;

mysql> select database();


Например:




Но можно использовать другой метод активации указав в строке консоли имя базы данных.


Привилегии и создание пользователей базой.


По умолчанию пользователь локальной базы, тот, кто имеет максимум привилегий по работе со всеми объектами mysql-сервера и баз данных на нем, имеет имя root.

Однако, нужно в целях безопасности создавать пользователей наделенных отдельными полномочиями, которые могли бы работать с базой (базами) данных в строго отведенных для них рамках.

Для создания пользователей и предоставления или лишения их полномочий используются команды GRANT и REVOKE


GRANT privileges [columns]

ON item

TO user_name [IDENTIFIED BY ‘password’]

[WITH GRANT OPTION];


privileges – перечень полномочий, которые должны быть четко описаны в MySQL, разделяются запятыми.


columns – необязательный параметр, его можно использовать к конкретным полям (столбцам) таблиц, если несколько столбцов, то список разделяется запятыми.


item – объект к которому применяются полномочия, может быть базой или таблицей.

значение *.* позволяет применять полномочия ко всем базам данных одновременно. Этот же эффект достигается, если указать знак *.

Чаще всего указывается имя базы в виде db_name.*, если необходимо приенить полномочия ко всем таблицам базы данных. Если же к непосредственно выбранной таблице – то db_name.table_name. Список необходимых столбцов для доступа согласно привилегиям доступен в перечислении [columns].


user_name – имя пользователя под которым можно получить согласно привилегиям доступ к назначенному объекту (базе, таблице, полю).


password – необходимый для входа пароль


IDENTIFIED BY проверяет верность пароля. Если пароля не существует он создается, как впрочем и указание пользователя.


WITH GRANT OPTION – позволяет пользователю устанавливать свои полномочия другим пользователям.


Виды привилегий.

ALTER

изменение таблиц и индексов

CREATE

создание баз данных и таблиц

CREATE TEMPORARY TABLES,

создание временных баз данных

DELETE

Удаление записей из таблиц

DROP

Удаление баз данных и таблиц

EXECUTE

Выполнение хранимых процедур

FILE

Чтение и запись файлов на сервере

GRANT OPTION

Присвоение привилегий другим пользователям

INDEX

Создание или удаление индексов

INSERT

Вставка новых записей в таблицы

LOCK TABLES

Закрытие таблицы явным образом (блокировка)

PROCESS

Просмотр информации о сервере и процессах

RELOAD

Перезагрузка таблиц, обновление журналов, кэша таблиц и компьютера

SELECT

выборка записей из таблицы

SHOW DATABASES

Право на использование команды SHOW DATABASES

SHUTDOWN

Завершение работы сервера

UPDATE

Изменение существующих записей таблиц

ALL

Все операции за исключением GRANT

USAGE

Без привилегий.


Как правило, создание нового пользователя происходит пользователем наделенным наибольшими полномочиями.

При создании пользователя всех баз данных происходит пользователем root.


C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 25 to server version: 5.0.18


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> grant all

-> on *.*

-> to georgi identified by '123';

Query OK, 0 rows affected (0.05 sec)


Для просмотра привилегий (полномочий) можно воспользоваться командой SHOW GRANTS FOR ‘user_name’;


mysql> show grants for 'georgi';

+-------------------------------------------------------------------------------

---------------------------------+

| Grants for georgi@%

|

+-------------------------------------------------------------------------------

---------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'georgi'@'%' IDENTIFIED BY PASSWORD '*23AE809DD

ACAF96AF0FD78ED04B6A265E05AA257' |

+-------------------------------------------------------------------------------

---------------------------------+

1 row in set (0.05 sec)


Для ограничения полномочий пользователя необходимо конкретно указать те полномочия, которые мы хотим ему назначить и к какому объекту они длжны применяться:


mysql> grant select, update, insert

-> on proba.sample

-> to horhe identified by '123';

Query OK, 0 rows affected (0.11 sec)


mysql> show grants for 'horhe';

+---------------------------------------------------------+

| Grants for horhe@%

|

+-----------------------------------------------------+

| GRANT USAGE ON *.* TO 'horhe'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0F

D78ED04B6A265E05AA257' |

| GRANT SELECT, INSERT, UPDATE ON `proba`.`sample` TO 'horhe'@'%'

|

+-----------------------------------------------------------------+

2 rows in set (0.00 sec)


Для удаления полномочий существует команда REVOKE.


Удаление всех привелегий пользователя в базе proba

mysql> revoke all

-> on proba.*

-> from horhe;

Query OK, 0 rows affected (0.00 sec)


или отдельных привилегий:


mysql> revoke insert, update

-> on proba.sample

-> from horhe;

Query OK, 0 rows affected (0.06 sec)


mysql> show grants for horhe;

+-------------------------------------------------------------------------------

-----------------------+

| Grants for horhe@%

|

+-------------------------------------------------------------------------------

-----------------------+

| GRANT USAGE ON *.* TO 'horhe'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0F

D78ED04B6A265E05AA257' |

| GRANT SELECT ON `proba`.`sample` TO 'horhe'@'%'

|

+-------------------------------------------------------------------------------

-----------------------+

2 rows in set (0.05 sec)


При соединении с базой данных с удаленного компьютера, для установки привилегий необходимо указывать значение имени пользователя указывая hostname.

Например:

GRANT ALL ON samp_db.* to ‘horhe’@’localhost’ identified by ‘123’;

или же:

GRANT ALL ON samp_db.* to ‘boris’@’area.mars.net’ identified by ‘123’;


При значениях буквенно-цифровых, кавычки не нужны, но если встречаются прочие символы, то обязательно.

Если необходимо подключаться отовсюду, то используется в качестве значений hostname %.


Удаление пользователей.

Имена и парольи всех пользователей хранятся в базе MySQL поэтому, чтобы удалить его неоходимо перейти в базу MySQL


mysql> use mysql;

Database changed

mysql> delete from user

-> where user='horhe';

Query OK, 1 row affected (0.06 sec)


mysql> show grants for horhe;

+-------------------------------------------------------------------------------

-----------------------+

| Grants for horhe@%

|

+-------------------------------------------------------------------------------

-----------------------+

| GRANT USAGE ON *.* TO 'horhe'@'%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0F

D78ED04B6A265E05AA257' |

| GRANT SELECT ON `proba`.`sample` TO 'horhe'@'%'

|

+-------------------------------------------------------------------------------

-----------------------+

2 rows in set (0.06 sec)