Purple Hearts Местный Клуб Любителей
Главное меню
.главная
.статьи
.линкс
.сЁрч
.форум
.новости
.проект
Упражняемся в ssh
Рейтинг: / 3
ХудшаяЛучшая 
Написал Al-x Log   
21.03.2006

Многостраничная статья десятым кеглем смысл которой укладывается в пару строк:

ls, cd, cp, pwd, mysqldump.

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

Вступление. 

Иногда бывает так, что что-то надо сделать с базой данных. Например, копию (дамп базы). Вы уже достаточно опытны в этих делах, умеете пользоваться phpMyAdmin, и вроде как больше ничего Вам и не надо. Но тут, совершенно неожиданно для Вас, выясняется, что база Ваша стала превышать допустимые phpMyAdmin размеры. Копируется у Вас всего ничего от базы и потом полученное невозможно восстановить. Что делать? Умники с форумов поддержки говорят о какой-то командной строке и ssh...

Об этом мы и поговорим сегодня. Я не буду рассказывать, что же это такое: ssh. Я сам не очень в этом разбираюсь. Как ни странно, а я такой же пользователь, как и Вы. Если кому-то захочется профильтровать вопрос подробней - в сети масса информации по этому поводу. Здесь же я расскажу о тех командах, которые Вам могут потребоваться при работе в командной строке с базой данных Вашего форума.

 

Коннект.

Команды - это, конечно, хорошо, скажите Вы, а куда их собственно вводить? Вы наверняка уже слышали что-то про putty. Это программка под Виндоус. Я сам когда-то ей пользовался. Простенькая программка, не требует установки, состоит из одного файла. Но как-то перестала она мне нравится. Теперь я использую другую программу. Она потяжелей, но и функций у неё побольше. Возможно, где-то рядом у меня уже появилась статейка на тему что да как. Сейчас же я не стану заострять на этом внимания. Скажу просто: сам я пользуюсь SSH Secure Shell Client. Что выбрать Вам - Ваше личное дело.

Что нам ещё потребуется для коннекта? Для начала, неплохо бы уточнить у Вашего хостера, а есть ли у Вас вообще ssh-доступ. Вообще должен быть. Даже бесплатный агавовский (h1 - hn, holm, hut) хостинг предоставляет его. Так что требуйте в офисах Вашего хостера.

Как это выглядит:

# SSH доступ
Хост: lca.net.ru
Имя пользователя: alxssh
пароль: BuGaGa

Данные весьма себе примерные. Более того, выдуманные. Так что даже не пытайтесь...

Вводим что надо, куда надо и после чуть-чуть получаем приглашение, что-то вроде:

[alxssh@localhost]$

в зависимости от настроек системы приглашение может отличаться.

А вот теперь, дорогие мои пользователя виндоус, должен сообщить Вам, что Вы оказались на вражеской территории. Да-да. Дальше начинается царство Никсов. То есть либо Linux, либо BSD, либо ещё что-то. Чаще всего сервера держат именно на никсовых системах. И, как ни странно, сейчас мы будем учиться работать в этих операционках.

С чего начать?

Давайте посмотрим, что у нас тут вообще есть. Стартуют все по разному. Кто-то хочет посмотреть, в какой же системе он очутился. Кто-то пытается выяснить, с какими правами он здесь находится. Кто-то что-то ещё. Для всего этого есть свои команды. Я же начинаю с просмотра чего у меня тут вообще есть:

[alxssh@localhost]$ ls

html/ other/ public_html/ temp/ zip/

Папки, я опять же выдумал, но все они запросто могут оказаться, а могут и не оказаться. Кстати, это всё папки, знакомые Вам со времён виндоус.

Как бы теперь по понятней начать выражаться?

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

Давайте поищем, где же у нас находятся файлы нашего сайта или форума. Обычно это одна из нижеперечисленных папок:

html/ public_html/ www/

Поскольку, зайдя на сервер, Вы уже набрали команду ls, которая, кстати сказать, выдаёт нам список папок (каталогов) и файлов, то одну из указанных папок Вы должны были углядеть. Пусть это будет папка html. Что бы убедиться, что это именно она, нам надо просмотреть её содержимое. Сделать это можно двумя способами:

1. зайти и посмотреть

2. посмотреть там, где стоим.

Начнём со второго:

ls html

То есть мы набираем команду что делать и указываем, с чем именно это делать. Выглядеть это будет примерно так:

[alxssh@localhost]$ ls html

forum/ images/ css/ index.htm

Кстати, пока далеко не ушли, что бы команда начала работать, после её набора не лишне нажать enter :)

Теперь сразу же опробуем и другой, в нашем случае, первый способ. Заходим в папку html, как это сделать? Здесь нам поможет запылившееся знание операционной системы Ms-DOS. Не помните? Ну и ладно. Тогда просто смотрим на пример:

[alxssh@localhost]$ cd html

[alxssh@localhost html]$

Обратили внимание? Приглашение теперь содержит тот каталог в котором мы находимся. Но, это не всегда так. Иногда может дело оказаться и так:

[alxssh@localhost]$ cd html

[alxssh@localhost]$

И кажется, что ничего не произошло. На самом деле - это не так. Что бы убедиться в этом, опять же есть два способа, как обычно: первый и второй.

1. pwd - команда, которая выдаёт настоящее наше местоположение.

2. ls - как помним, эта команда выдаст нам перечень того, что есть в каталоге.

и так:

[alxssh@localhost html]$ ls

forum/ images/ css/ index.htm

Ну, вроде как с папкой мы угадали. Весь наш вэб содержится именно в html. Тут же у нас и папка с форумом forum. У Вас она может называться совсем по другому, например phpBB2.

К делу это пока не относится. Но просто имейте ввиду, как гулять между каталогами. Теперь давайте вернёмся в домашний каталог, где будем упражняться в делании дампа.

Как сделать? Опять же много путей есть для этого:

cd.. - выбросит нас в предыдущий каталог.

cd ~ - доставит нас прямиком в наш домашний каталог.

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

[alxssh@localhost]$ mkdir zip

Команда mkdir создаёт папки. Если после этой команды указать какое-нибудь слово, то новая папка будет названа в честь этого самого слова. Исторически сложилось, что для подобных дел я обычно использую папку zip.

В этой папке можно создать ещё папок под разные нужды. Например, Ваш сайт тоже может использовать базу данных, дамп которой Вам может пригодиться...

Итак, наши следующие действия:

[alxssh@localhost]$ cd zip - заходим в созданную только что папку

[alxssh@localhost zip]$ mkdir dbforum - создаём папку под дамп базы данных форума.

[alxssh@localhost zip]$ cd dbforum - заходим в неё.

Теперь о дампе.

Для того чтобы сделать дамп базы, нам потребуются данные, которые мы как-то уже использовали при установке форума. Если забыли, то их можно подсмотреть в файле config.php:

$dbhost = 'localhost'; //хост базы данных
$dbname = 'alx_forum'; //имя базы данных
$dbuser = 'alx'; //пользователь базы данных
$dbpasswd = 'BuGaGaFoRFoRuM'; //пароль

Это на случай, если забыли, что к чему. Сейчас я покажу команду, а потом разберём, что там к чему:

mysqldump -pBuGaGaFoRFoRuM --all --add-drop-table -h localhost -u alx -B alx_forum | gzip -c > forum.060320.sql.gz

mysqldump - команда, которая делает дамп базы данных;

-pBuGaGaFoRFoRuM - пароль. Обратите внимание, что после буквы p пробела не ставится;

--all - эта опция говорит, что сохранять надо все таблицы;

--add-drop-table - а эта, говорит, что надо добавить директиву на удаление существующих таблиц. Что это значит? Это значит, что когда Вы попытаетесь восстановить дамп в базу, где уже созданы таблицы форума, а этой директивы нет, Вам будет сказано, что такие таблицы уже существуют и восстановление не возможно. А если директива эта есть, то mysqldump в начале таблицы удалит, а потом создаст.

-h localhost - хост базы данных. Если он, как в этом примере localhost, то указывать его не обязательно. Товарищам с агавы обращаю внимание: у Вас хост database

-u alx - имя пользователя;

-B alx_forum - имя базы данных.

Это то, чем делается дамп. Теперь попытаемся этот дамп обратить в какой-нибудь файл.

| -эта прямая черта перенаправляет выполнение одной команды в другую. В нашем случае дамп передаётся архиватору gzip:

gzip -c > forum.060320.sql.gz - gzip хватает дамп, жмёт и значком > добавляет его в файл forum.060320.sql.gz

forum.060320.sql.gz - название можете придумывать сами. Желательно, что бы оканчивалось это название: *.sql.gz

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

Теперь, если мы наберём команду ls:

[alxssh@localhost dbforum]$ ls

forum.060320.sql.gz

Но в жизни всякое бывает. Название-то Вам покажут, но не редки случаи, когда файл создаётся, но с размером 0. То есть, совсем пустой. Как убедиться в том, что всё хорошо?

[alxssh@localhost dbforum]$ ls -la
drwxr-xr-x 2 root root 4096 Мар 21 00:51 ./
drwxr-xr-x 3 root root 4096 Мар 21 00:49 ../
-rw-r--r-- 1 root root 6144 Мар 21 00:51 forum.060320.sql.gz

тут масса полезной информации, в настоящий момент нас интересует число 6144. Это размер файла в байтах. Что бы понять, сколько же это в, любимых нами килобайтах, надо это число разделить на 1024. Получим 6 кб. Не удивляйтесь, столь малому размеру. Во-первых, мы пожали это дело, а во-вторых, мой пример совсем пустой.

Теперь Вы решили этот файл скачать к себе на домашний компьютер. Можно, конечно сделать это по ftp. А что если файл довольно большой, инет довольно маленький? В том смысле, что модем, да ещё более 32 кб/сек не даёт. Остаётся воспользоваться каким-нибудь менеджером закачек. Но какой же адрес давать этому менеджеру?

Сколько вопросов...

Для этого надо скопировать этот файл в доступное бразеру/менеджеру место. Например, в тот самый каталог, где находятся все файлы Вашего сайта. Как мы помним, находится он в папке html.

[alxssh@localhost dbforum]$ cp forum.060320.sql.gz

кстати, открою маленький секрет: чтобы не набирать название файла целиком, достаточно набрать его первую букву и нажать табуляцию. Если с этой буквы начинается только этот файл, то его название появится целиком. Если же файлов несколько, то можно ввести вторую букву и третью. Если файлов с похожим началом несколько, то... В общем, поэкспериментируйте. Увидите. Это долго и нудно объясняется, но на деле, всё просто. И так:

[alxssh@localhost dbforum]$ cp forum.060320.sql.gz ~/html/

Обратите внимание: cp - это не опечатка от cd, а команда копирования файлов.

~/html/ - здесь, значком ~ мы говорим, что стартовать надо с домашнего каталога и после / указываем каталог, в который будем копировать файл.

Опять же для проверки правильности пути, можно делать так:

cp forum.060320.sql.gz ~/h табуляция. Если всё верно, то html/ появится автоматически.

Теперь Ваш дамп доступен по адресу: http://lca.net.ru/forum.060320.sql.gz

Естественно, тут надо указать Ваш адрес сайта.

Когда делаем дамп?

Ответ прост, как всё гениальное: всегда. В зависимости от посещаемости Вашего ресурса и обновления информации на нём: раз в день или раз в неделю или раз в месяц. Если всё совсем плохо: раз в год.

Ну и естественно, каждый раз, перед тем как вносить в базу, какие либо изменения. Например, Вы ставите мод или обновляете версию форума.

Конечно, от этого в скорости можно сойти с ума. Для этого мудрые хостеры предлагают использовать Cron. Подробности сами знаете где (у хостера). В двух словах: Cron - это штука, которая позволяет делать что-то по расписанию.

Как вернуть?

Случилось страшное.

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

- Вам стало любопытно, что значит DROP или TRUNCATE в phpMyAdmin.

- Хостер вывесил объявление на своём сайте: в связи с тем, а так же этим... приносим свои искренние извинения за...

В общем, случилось страшное.

Но Вы воспользовались моим советом и делали дамп часто часто. И не ленились сливать его к себе, что бы не зависеть от искренних извинений.

Как же теперь восстановить дамп? Легко.

Для начала поместите файл-дамп в удобный для Вас каталог, это в случае, если дампа на сервере нет. Или же зайдите в папку, где он лежит. Далее:

gzip -dc forum.060320.sql.gz | mysql -pBuGaGaFoRFoRuM -h localhost -u alx -B alx_forum

gzip -dc - разархивирует файл;

| - перенаправляет это дело в mysql, где размещается согласно:

-pBuGaGaFoRFoRuM -h localhost -u alx -B alx_forum

С этим вроде всё.

 

Лезем в Мускл.

Иногда может быть, что другой возможности редактировать базу данных, кроме как в командной строке, нет. Например, никак не удаётся настроить phpMyAdmin или надо что-то быстро исправить, а возиться некогда. Ну всякое бывает. Тогда лезем в MySQL.

Делать это можно с любого места на сервере. Допустим, Вы только что приконнектились, находитесь в домашнем своём каталоге. Отсюда и пойдём:

[alxssh@localhost]$ mysql -p -u alx -B alx_forum

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.12
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Большой кусочек получился. Сейчас разберём:

mysql -p -u alx -B alx_forum - вопрос: почему же мы после -p ничего не написали? Потому что не обязательно. Как видите, следующая строка предлагает нам ввести пароль:

Enter password: - когда эта строка появилась: вводите пароль. Не пугайтесь, если не увидите того, что вводите. В этом прелесть :) Например за плечом кто-то может стоять, а Вы не хотели бы, что бы пароль увидели. Правильность или неправильность ввода пароля откроется на следующих строках. Либо аксцесс денид, либо Welcome to the MySQL monitor.

Базу данных тоже можно не указывать. Когда будете там, всегда сможете выбрать нужную Вам.

Обратите внимание:

Commands end with ; or \g. - это лишний раз напоминают, что каждую команду в MySQL следует заканчивать точкой с запятой либо \g. Чаще это всё же точка с запятой.

Type 'help;' or '\h' for help. - это Вам говорят о том, как вызвать справку по работе с MySQL.

Теперь наше приглашение выглядит так:

mysql>

вводите здесь команду и жмёте enter. Ничего сложного.

О том, что и как делать в MySQL лучше почитать здесь:

http://dev.mysql.com/doc/refman/4.0/ru/

Я же расскажу только про одну команду, может про две... а может...

Небольшой набор команд MySQL.

Всё сначала. Заходим:

[alxssh@localhost]$ mysql -p -u alx -B alx_forum

Enter password:

mysql>

Давайте посмотрим, какие нам вообще базы доступны:

mysql> show databases;

+----------+
| Database |
+----------+
| forum ___|
| test ____|
+----------+

2 rows in set (0.00 sec)

Не густо. Ну да ладно. Выбираем нужную нам:

mysql> use forum;
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

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

А теперь давайте посмотрим что там у нас за таблицы созданы:

mysql> show tables;

Результат выдавать не буду. Сами увидите.

Что ещё может быть нам полезно? Периодически необходимо проверять таблицы, мало ли что там происходит? Например нам надо проверить таблицу сессий, а то что-то она у нас барохлит:

mysql> check table phpbb_sessions;

Обращаю Ваше внимание:

phpbb_ - это преффикс по умолчанию. Во время установки форума, Вы могли пойти своим оригинальным путём и сменить его. В это случае таблица будет называться немного по другому. В любом случае, команда show tables расскажет Вам об этом.

Если с таблицей не всё в порядке, её следует чинить:

mysql> repair table phpbb_sessions;

Часто бывает необходимо почистить таблицу сессий:

mysql> truncate table phpbb_sessions;

А ещё таблицу можно оптимизировать:

mysql> optimize table phpbb_sessions;

Всё это легче проделывать в phpMyAdmin, так как по умолчанию база форума phpbb состоит из 30-ти таблиц (версия 2.0.19) и указывать все таблицы через запятую - утомительное дело. А в phpMyAdmin можно один раз кликнуть: Отметить все, и сказать, что же с отмеченными делать. Но, как я уже говорил, иногда бывает так, что phpMyAdmin не может помочь. У меня однажды так было... Просто будьте готовы и не теряйтесь.

Далее. Часто возникает такой вопрос:

Я настраивал свой форум в локальной сети. Теперь перенёс его на сервер. Всё встало нормально, но почему-то при переходе по некоторым ссылкам в адресной строке выскакивает странный адрес:

http://localhost/forum/login.php

и бразузер говорит, что такой страницы нет.

Ну естественно, ведь в той базе, которую Вы переносили, сказано, что имя сервера у Вас localhost. Надо бы его сменить на новый адрес. Как это сделать без phpMyAdmin?

Команда:

mysql> update phpbb_config SET config_value = 'lca.net.ru' where config_name = 'server_name' limit 1;
Ответ:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Всё путём.

Ну и на последок. Что-то там у Вас произошло, и Вам очень срочно и быстро надо назначить своего пользователя Админом:

mysql> update phpbb_users SET user_level = '1' where user_id = 'xxx';

user_id - должен равняться номеру Вашего пользователя. Посмотреть это можно, наведя курсор мыши на ник и, посмотрев на ссылку в строке состояния бразера. Пример:

http://localhost/forum/profile.php?mode=viewprofile&u=2

В нашем случае, это будет цифра два.

Выход.

Ну и о корректном завершении работы:

Вы скажите:

mysql> exit

Вам ответят:

Bye

И Вы вернётесь в:

[alxssh@localhost]$

Здесь тоже можно сказать:

[alxssh@localhost]$ exit

И спать.

 

 

Удачи.

ПиЭс С возникшими вопросами, замечаниями и предложениями милости прошу на форум.

Последнее обновление ( 24.04.2007 )
 
< Пред.   След. >
мой linux
Машинопись в linux

Мало кому известно, что вообще никому не известно, чем руководствовалась компания Microsoft выбирая русскую раскладку клавиатуры для своей небезывестной операционной системы.

Хотя сейчас вот, готовя это вступление, снова перечитал статью т. Лебедева, и понял, чем же куроводствовалась эта компания...

Если коротко, то знаки препинания не должны набираться через верхний регистр. А именно в этой мелочи, как мне кажется, и кроется основное отличие машинописи от навязанного стандарта. Вы спросите: "а как же набирать цифры?!" Как, как... Если у Вас не ноутбук, то на фига Вам цифровой блок справа? Поверьте: цифры там набирать гораздо удобней, чем в верхнем ряду.

К сожалению, авторы моего любимого дистрибутива Mandriva , почему-то так же взяли за основу "стандарт" из виндов. Возможно хотели сделать переезд с винды, как можно менее болезненным, а может ещё чего.

Долгое время искал информацию в нете, как же вернуть мою Машинопись. И не мог найти. А потому эта статья, призванная помочь тем, кто так же как и я набирает в слепую до фига знаков в минуту, и страдает от того, что запятая набирается через shift, или, того хуже, в английской раскладке...

 
я о phpbb
Описание файлов tpl
Описание файлов шаблона. Те самые tpl файлы, которые предлагают смотреть, когда вы спрашиваете, где менять внешний вид.
 
Упражняемся в ssh

Многостраничная статья десятым кеглем смысл которой укладывается в пару строк:

ls, cd, cp, pwd, mysqldump.

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

 
FAQ The Bots. Часть вторая. Боюсь, не последняя
К сожалению, боты научились читать визуальный код подтверждения регистрации. Противостояние продолжается...
 
компьютер начинающему.
Основы безопасности в сети

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

 

Очень надеюсь, что совсем скоро я отпишу более подробную статью по безопасности, с конкретными примерами.

 
Проверяем версию DirectX и ещё кое что
Игра требует DirectX 9c. Откуда мне знать, какой у меня стоит?
 
Почтовая программа The Bat. Первое знакомство
Есть несколько причин по которым я советую эту программу.
Во времена мощных эпидемий, я не встречал ни одного заражённого письма отосланого с этого почтовика. Оутлук - да. The Bat - нет.
Как ни крути, а на данный момент - это самый известный почтовый клиент.
Здесь приведена информация, которая может пригодится если Вы видите эту программу в первый раз.
Если же Вы пользуетесь уже этой программой, но не слышали про диспетчер новых сообщений - эта статья Вам просто необходима...
 
Опросы
Ну как?
 
Кто здесь?
Экспорт новостей
RSS от LCA