Немного разбираемся в MySQL

| 0 comments

Несмотря на то, что я — дизайнер и верстальщик, мне довольно часто приходится настраивать очередной проект на собственном веб-сервере. Я использую Mac OS X Mountain Lion и Zend Server в качестве веб-сервера. Большое спасибо Дмитрию за то, что он написал подробное руководство по установке Zend Server — веб-сервер, который мы используем в Лаборатории. Как и написано в руководстве, я использую приложение Sequel Pro для управления базами данных.

Однако, недавно мне потребовалось выгрузить базу данных cathome.ru (одного из наших проектов) на свой локальный сервер. База с данными весила порядка 5 ГБ и, если саму выгрузку я сделал через Sequel Pro, то вот импорт Sequel Pro уже не потянуло — приложение подвисало и база импортировалась лишь частично.

Пришлось производить импорт через Terminal (а заодно и посмотреть, как осуществляется экспорт), о чем я постараюсь подробно написать.

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

$ ssh user@host

Сервер попросит ввести пароль на подключение:

user@host's password:

Попробуем подключиться к серверу баз данных MySQL (dbuser — имя пользователя базы данных):

$ mysql -u dbuser -p

Сервер попросит ввести пароль для dbuser, вводим пароль, после чего нас поприветсвует MySQL, и все команды в терминале будут начинаться с mysql>.

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

mysql> SHOW DATABASES;

Мне очень нравится вывод списка баз данных:-)

+--------------------+
| Database |
+--------------------+
| information_schema |
| my_example_db |
+--------------------+
2 rows in set (0.00 sec)

Если мы хотим дальше работать с базой данных my_example_db, то пишем в терминале:

mysql> USE my_example_db;

Однако, нам это пока не понадобится, поэтому мы просто выходим из MySQL:

mysql> EXIT;

Теперь собственно экспорт базы данных в файл SQL (dbuser — пользователь базы данных, my_example_db — база данных, которую будем экспортировать, dbexport.sql — имя файла, в который мы будем экспортировать базу данных:

$ mysqldump -p -u dbuser my_example_db > dbexport.sql

Сервер спросит пароль пользователя dbuser для доступа к базе данных, вводим его.

Эта команда экспортируем содержимое базы данных my_example_db в файл dbexport.sql. Из этого файла в дальнейшем мы сделаем импорт структуры базы и данных в нашу локальную базу данных. Файл dbexport.sql создается в той же папке, в которой мы находимся. При желании можно указать путь, например /home/user/dbexport.sql. Если мы подключились пользователем user, то эта же папка будет домашней папкой для пользователя.

Скачиваем файл dbexport.sql себе на компьютер (c помощью любого FTP-клиента), после чего отключаемся от удаленного сервера (host):

$ exit

Теперь работаем на нашем локальном сервере. У меня, как я упомянул выше, установлен Zend Server.

Снова подключаемся к серверу баз данных MySQL, на этот раз к локальному (/usr/local/zend/mysql/bin/mysql — путь, в который по умолчанию устанавливается MySQL, root — супер пользователь базы данных):

$ /usr/local/zend/mysql/bin/mysql -u root -p

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

Так как мы хотим, чтобы структура проекта была точной копией «живого» сервера, нам необходимо будет создать базу данных с тем же именем (my_example_db), пользователя, который будет иметь доступ только к данной базе данных и пароль, идентичный тому, что на сервере. В этом случае мы, скорее всего, сможем использовать тот же файл с данными для подключения к базе данных, что и на «живом» сервере.

mysql> CREATE DATABASE my_example_db;

mysql> GRANT ALL PRIVILEGES ON my_example_db.* TO dbuser@'localhost' IDENTIFIED BY 'db_password';

Выходим из MySQL:

mysql> EXIT;

Теперь проверим, что пользователь dbuser, которого мы только что создали, имеет доступ к базе данных my_example_db. Для этого заново подключимся к серверу баз данных, но уже с другими данными:

$ /usr/local/zend/mysql/bin/mysql -u dbuser -p

Вводим наш пароль db_password.

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

mysql> SHOW DATABASES;

И снова получаем в ответ. База данных my_example_db есть в списке, а значит все ОК.

+--------------------+
| Database |
+--------------------+
| information_schema |
| my_example_db |
+--------------------+
2 rows in set (0.00 sec)

Выходим из MySQL:

mysql> EXIT;

Импортируем содержимое файла dbexport.sql в базу данных my_example_db:

$ /usr/local/zend/mysql/bin/mysql -u dbuser -p my_example_db < /Users/kasaev/Downloads/dbexport.sql.

/Users/kasaev/Downloads — это путь к файлу dbexport.sql.

Leave a Reply

Required fields are marked *.