<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; MySQL</title>
	<atom:link href="http://blog.lukmus.ru/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>backup с PGP шифрованием</title>
		<link>http://blog.lukmus.ru/2021/03/23/gpg-backup/</link>
		<comments>http://blog.lukmus.ru/2021/03/23/gpg-backup/#comments</comments>
		<pubDate>Tue, 23 Mar 2021 18:12:03 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[настройка и установка]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2685</guid>
		<description><![CDATA[В продолжение постов про GPG и о геме Backup собираю все в одну статью и дополняю настройкой для автоматического шифрования резервных копий. утилита GPG Установка, естественно, от пользователя с root-правами. На RedHat&#8217;ах: yum install pgp На Debian&#8217;ах: apt-get install pgp Для создания ключей все та же команда, выполнять которую можно от рядового пользователя. gpg --gen-key [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение постов <a href="https://blog.lukmus.ru/2010/10/29/gnupg-v-linux/">про GPG</a> и <a href="https://blog.lukmus.ru/2014/01/10/backup-na-yandeks-disk/">о геме Backup</a> собираю все в одну статью и дополняю настройкой для автоматического шифрования резервных копий.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2021/03/huge-encryption-517.png" alt="" /><span id="more-2685"></span></p>
<h2>утилита GPG</h2>
<p>Установка, естественно, от пользователя с root-правами.<br />
На RedHat&#8217;ах:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">yum install</span> pgp</pre></td></tr></table></div>

<p>На Debian&#8217;ах:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get install</span> pgp</pre></td></tr></table></div>

<p>Для создания ключей все та же команда, выполнять которую можно от рядового пользователя.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--gen-key</span></pre></td></tr></table></div>

<p>Далее понадобится экспорт ключей в текстовый файл. В командах ниже <code>username@email</code>, разумеется, надо заменить на почту указанную при генерации.</p>
<p>Экспорт публичного ключа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--output</span> public.pgp <span style="color: #660033;">--armor</span> <span style="color: #660033;">--export</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Экспорт закрытого (приватного) ключа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--output</span> private.pgp <span style="color: #660033;">--armor</span> <span style="color: #660033;">--export-secret-key</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Если требуется, после экспорта ключей их можно удалить. Сначала удаляется закрытый ключ:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--delete-secret-keys</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Затем открытый:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--delete-keys</span> username<span style="color: #000000; font-weight: bold;">@</span>email</pre></td></tr></table></div>

<p>Вывести список всех импортированных ключей:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--list-keys</span></pre></td></tr></table></div>

<h2>gem backup и PGP-ключ</h2>
<p>Установка гема:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> backup</pre></td></tr></table></div>

<p>Cоздание модели (в данном примере модель называется <code>ekzample</code>) для бекапа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">backup generate:model <span style="color: #660033;">--trigger</span> ekzample
Generated model file: <span style="color: #ff0000;">'~/Backup/models/ekzample.rb'</span>.</pre></td></tr></table></div>

<p>Далее, для настройки нужного бекапа, следует отредактировать <code>~/Backup/models/ekzample.rb</code>.</p>
<p>В примере ниже показан конфиг для резервного копирования базы MySQL с последующим сжатием в tar и шифрованием архива PGP-ключом, после чего зашифрованный файл отправляется по SFTP на бекап-сервер.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># encoding: utf-8</span>
&nbsp;
<span style="color:#008000; font-style:italic;">##</span>
<span style="color:#008000; font-style:italic;"># Backup Generated: ekzample</span>
<span style="color:#008000; font-style:italic;"># Once configured, you can run the backup with the following command:</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#008000; font-style:italic;"># $ backup perform -t ekzample [-c &lt;path_to_configuration_file&gt;]</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#008000; font-style:italic;"># For more information about Backup's components, see the documentation at:</span>
<span style="color:#008000; font-style:italic;"># http://backup.github.io/backup</span>
<span style="color:#008000; font-style:italic;">#</span>
Model.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:ekzample</span>, <span style="color:#996600;">'Description for ekzample'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  split_into_chunks_of <span style="color:#006666;">500</span>
&nbsp;
  <span style="color:#6666ff; font-weight:bold;">Encryptor::GPG</span>.<span style="color:#9900CC;">defaults</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>encryption<span style="color:#006600; font-weight:bold;">|</span>
    encryption.<span style="color:#9900CC;">keys</span> = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
    encryption.<span style="color:#9900CC;">keys</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'username@email'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&lt;&lt;-</span>KEY
      <span style="color:#006600; font-weight:bold;">-----</span><span style="color:#9966CC; font-weight:bold;">BEGIN</span> PGP PUBLIC KEY BLOCK<span style="color:#006600; font-weight:bold;">-----</span>
      ...<span style="color:#9900CC;">it</span> is place <span style="color:#9966CC; font-weight:bold;">for</span> PUBLIC KEY...
      <span style="color:#006600; font-weight:bold;">-----</span><span style="color:#9966CC; font-weight:bold;">END</span> PGP PUBLIC KEY BLOCK<span style="color:#006600; font-weight:bold;">----</span>
    KEY
    encryption.<span style="color:#9900CC;">recipients</span> = <span style="color:#996600;">'username@email'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  database MySQL <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>db<span style="color:#006600; font-weight:bold;">|</span>
    db.<span style="color:#9900CC;">name</span>  = <span style="color:#996600;">'exampledb'</span>
    db.<span style="color:#9900CC;">username</span> = <span style="color:#996600;">'exampleuser'</span>
    db.<span style="color:#9900CC;">password</span> = <span style="color:#996600;">'examplepass'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  compress_with Gzip
  encrypt_with GPG
&nbsp;
  store_with SFTP <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>server<span style="color:#006600; font-weight:bold;">|</span>
    server.<span style="color:#9900CC;">username</span> = <span style="color:#996600;">'backupuser'</span>
    server.<span style="color:#9900CC;">password</span> = <span style="color:#996600;">'backuppass'</span>
    server.<span style="color:#9900CC;">ip</span>       = <span style="color:#996600;">'111.111.111.111'</span>
    server.<span style="color:#9900CC;">port</span>     = <span style="color:#006666;">22</span>
    server.<span style="color:#9900CC;">path</span>     = <span style="color:#996600;">'~/'</span>
    <span style="color:#008000; font-style:italic;"># Use a number or a Time object to specify how many backups to keep.</span>
    server.<span style="color:#9900CC;">keep</span>     = <span style="color:#006666;">150</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Additional options for the SSH connection.</span>
    <span style="color:#008000; font-style:italic;"># server.ssh_options = {}</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Не стоит забывать вставить между <code><<-KEY</code> и <code>KEY</code> созданный ранее ПУБЛИЧНЫЙ (открытый) ключ.</p>
<p>Для более тонкой настройки PGP-ключей, например, разные ключи для разных баз, следует воспользоваться <a href="https://backup.github.io/backup/v4/encryptor-gpg/" target="_blank" rel='nofollow'>официальной документацией</a>.</p>
<p>Запускается создание бекапа командой:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">backup perform <span style="color: #660033;">-t</span> ekzample</pre></td></tr></table></div>

<h2>извлечение бекапа</h2>
<p>Если в системе нет ключей, используемых данным бекапом, следует их импортировать:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">--import</span> private.pgp
gpg <span style="color: #660033;">--import</span> public.gpg</pre></td></tr></table></div>

<p>Далее чтобы расшифровать резервную копию понадобится команда:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">gpg <span style="color: #660033;">-o</span> ekzample.tar <span style="color: #660033;">-d</span> ekzample.tar.gpg</pre></td></tr></table></div>

<p>Для распаковки тарбола подойдет команда:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xvf</span> ekzample.tar</pre></td></tr></table></div>

<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2021/03/huge-encryption-517.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2021/03/23/gpg-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rails 3. переход с sqlite3 на mysql</title>
		<link>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/</link>
		<comments>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 02:03:45 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[ROR 3]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[yaml_db]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1089</guid>
		<description><![CDATA[Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том у кого длинее что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже [...]]]></description>
			<content:encoded><![CDATA[<p>Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том <span style="text-decoration: line-through;">у кого длинее</span> что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже самое будет работать на федоре старше 11.<br />
<img class="aligncenter size-full wp-image-1090" title="post-3714-1248825341" src="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" alt="" width="517" height="555" /><span id="more-1089"></span><br />
Далее я буду описывать все в том порядке, в каком делаю это я. Также я считаю, что именно такой порядок наиболее удобен для миграции с SQLite3 на MySQL.</p>
<h2>экспорт БД с sqlite3</h2>
<p>Прежде всего надо как-то сдампить старую БД на SQLite и хотелось бы это сделать без писания дополнительных скриптов. Для этого делаем нижеизложенное.<br />
Закидываем в Gemfile следующую строку:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'yaml_db'</pre></td></tr></table></div>

<p>И далее установим этот гем через bundle:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span><span style="color: #7a0874; font-weight: bold;">cd</span> rails_app <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> bundle <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Этот гем даст некоторые новые rake&#8217;и для работы с БД:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake <span style="color: #660033;">-T</span>
...
rake db:create          <span style="color: #666666; font-style: italic;"># Create the database from ...</span>
rake db:data:dump       <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:dump_dir   <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:load       <span style="color: #666666; font-style: italic;"># Load contents of db/data...</span>
rake db:data:load_dir   <span style="color: #666666; font-style: italic;"># Load contents of db/data_dir ...</span>
rake db:drop            <span style="color: #666666; font-style: italic;"># Drops the database for the ...</span>
rake db:dump            <span style="color: #666666; font-style: italic;"># Dump schema and data to db/...</span>
rake db:fixtures:load   <span style="color: #666666; font-style: italic;"># Load fixtures into the current...</span>
rake db:load            <span style="color: #666666; font-style: italic;"># Load schema and data from ...</span>
rake db:migrate         <span style="color: #666666; font-style: italic;"># Migrate the database (options:...</span>
rake db:migrate:status  <span style="color: #666666; font-style: italic;"># Display status of migrations</span>
rake db:rollback        <span style="color: #666666; font-style: italic;"># Rolls the schema back to ...</span>
rake db:schema:dump     <span style="color: #666666; font-style: italic;"># Create a db/schema.rb file ...</span>
rake db:schema:load     <span style="color: #666666; font-style: italic;"># Load a schema.rb file into...</span>
rake db:seed            <span style="color: #666666; font-style: italic;"># Load the seed data from...</span>
rake db:setup           <span style="color: #666666; font-style: italic;"># Create the database, load...</span>
rake db:structure:dump  <span style="color: #666666; font-style: italic;"># Dump the database structure...</span>
rake db:version
...</pre></td></tr></table></div>

<p>Далее нижеприведенной командой экспортируем схему и содержание БД в <code>db/data.yml</code>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:dump</pre></td></tr></table></div>

<p>Если БД слишком разрослась, можно попробывать вариант с <code>rake db:data:dump_dir</code>.</p>
<h2>поднимаем и настраиваем MySQL</h2>
<h3>MySQL</h3>
<p>Сразу же устанавливаем пакеты:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span><span style="color: #c20cb9; font-weight: bold;">yum install</span> mysql mysql-server mysql-devel ruby-mysql <span style="color: #660033;">-y</span></pre></td></tr></table></div>

<p>Далее прописываем во все тот же <code>Gemfile</code>:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'mysql2'</pre></td></tr></table></div>

<p>И опять бандлим:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>bundle <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Стартуем сервер MySQL.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>service mysqld start</pre></td></tr></table></div>

<p>Заходим под рутом в MySQL:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span></pre></td></tr></table></div>

<p>Если до этого руту был задан пароль, то его надо будет ввести, если это первый заход рута, то пароль пустой.<br />
А теперь создаем базу</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">DATABASE</span> railsdb CHARACTER <span style="color: #990099; font-weight: bold;">SET</span> utf8 <span style="color: #CC0099; font-weight: bold;">COLLATE</span> utf8_general_ci<span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>и пользователя, попутно назначая ему права на эту БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">ALL</span> <span style="color: #990099; font-weight: bold;">PRIVILEGES</span> <span style="color: #990099; font-weight: bold;">ON</span> railsdb.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">TO</span> <span style="color: #008000;">'railsuser'</span>@<span style="color: #008000;">'localhost'</span> IDENTIFIED BY <span style="color: #008000;">'railspass'</span> <span style="color: #990099; font-weight: bold;">WITH</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">OPTION</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Команда выше дает права пользователю <code>railsuser</code> с паролем <code>railspass</code> на полный доступ к БД <code>railsdb</code> c локального хоста. Подробнее о правах и как их назначить читаем на <a rel="nofollow" href="http://dev.mysql.com/doc/" target="_blank">оффсайте</a>.</p>
<h3>настройка rails-приложения</h3>
<p>Открываем config/database.yml и заменяем настройки БД нужной секции на подобные (в моем случае это development):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="yml" style="font-family:monospace;">development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: railsdb
  pool: 5
  username: railsuser
  password: railspass
  host: localhost</pre></td></tr></table></div>

<p>Хочу предупредить, что табуляция перед параметрами, видимо, очень важна т.к. без этих табов сервер не стартанул, а с ними запустился на ура.<br />
Теперь импортируем схему и данные в БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:load</pre></td></tr></table></div>

<p>Стоит помнить, что команда загрузки дампа может быть и немного иной, все зависит от того какую команду экспорта дампа выбирали вы в на первом шаге этого поста. Ну вот и все.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>автоматизация слива через blind sql-inj</title>
		<link>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/</link>
		<comments>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:52:43 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[blind sql-inj]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL-inj]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[слепая sql инъекция]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=450</guid>
		<description><![CDATA[Выкладываю пару скриптов автоматизации слива данных из слепой скули. Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png"><img class="alignleft size-full wp-image-451" style="margin-bottom: 2px; margin-right: 10px;" title="sql_inject" src="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png" alt="sql-inj" width="316" height="136" /></a>Выкладываю пару скриптов автоматизации слива данных из слепой скули.</p>
<p>Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы можно самому догадатся или же пробежатся по ним первым скриптом.<span id="more-450"></span></p>
<p>Аналогов, наверное, существует немерянно, но несмотря на это, я думаю, что мои скрипты обладают отличным преймуществом &#8211; они очень гибкие т.к. примитивны и в них очень легко разобратся.</p>
<p>Что такое SQL-inj, в том числе и слепая скуля, как с ними быть и многое другое, на мой взгляд лучше всего описано в этом <a rel="nofollow" href="https://rdot.org/forum/showthread.php?t=124">FAQ на rdot&#8217;е</a>.</p>
<div style="font-size: 1.7em;">однопоточный точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8mdl94" target="_blank">скачать скрипт</a></p>
<div style="font-size: 1.5em;">принцип работы</div>
<p>Как вы понимаете, если у вас слепая инъекция, то никаких прямых выводов на страницу не может быть. Вы задаете какой-либо предикат, а проще говоря, условие, например</p>
<p><code>128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>и в соответсвии с этим условием у вас отобразится, например, либо новость под номером 10, либо 9. Приведу пример полного запроса:</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>ну или так:</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --<br />
</code></p>
<p>В первом примере, если 128 больше ASCII-кода первого символа файла /etc/passwd, то выведется страница с новостью 10, в противном случае, выведется 9. Второй случай практически идентичен первому, заисключением того, что если не больше ASCII-кода, то выведется неизвестно какая страница (для каждого сайта индивидуально, надо просто попробывать запрос http://site.com/?id= ), скорее всего это будет редирект на главную.</p>
<p>Вообще существует достаточно много всяких способов раксрутки слепых скулей, не только по странице, которую мы получаем на выводе. Короче читаем FAQ, ссылка на которую указана выше.</p>
<p>Так вот скрипт, берет допустим первый символ и формирует такой запрос:</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code></p>
<p>если условие верно т.е. открылась страница с новостью 10, значит 128&gt;=ASCII&gt;=0, тогда скрипт делает запрос</p>
<p><code>64&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>32&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p>тогда следующий запрос, будет отталкиватся от кода 48 (48=32+32/2)</p>
<p><code>48&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>тогда вычитаем 8 (на прошлом ходе прибавляли 16, на каждом шаге делем на 2)</p>
<p><code>40&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>44&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>42&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>41&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>42=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>таким образом мы за 9 шагов однозначно определили символ.</p>
<p>Далее скрипт берет следующий символ и начинает все заново.</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>Я не читал, все статьи по blind SQL-inj, поэтому если кто-то придумал такой перебор раньше меня, а так наверняка оно и есть, не обижайтесь, что здесь нет ссылки на вышу статью и укажите ее в комментариях.</p>
<p>Все разгаданные символы скрипт записывает в файл и выводит на экран консоли.</p>
<div style="font-size: 1.5em;">конфигурация</div>
<p>Она располагается в начале скрипте и представляет из себя инициализацию глобальных переменных.</p>
<p><code style="font-size: 0.8em;">#config<br />
$request="/article.php?id=44+AND+##NUM####SIGN##ASCII%28MID%28##REPLACE##,##I##,1%29%29"<br />
$outfile="outfile"<br />
$priznak="eta_kartinka_est_tolko_v_statie_s_nomerom_44.jpg"<br />
$func="LOAD_FILE%28"+"0x2f6574632f706173737764"+"%29" #/etc/passwd<br />
$site="www.site.com"<br />
$start=1<br />
#config<br />
</code><br />
<strong>$request</strong> &#8211; сам запрос, с метками:</p>
<ul>
<li>##NUM## &#8211; число с которым сравнивается ASCII-код</li>
<li>##SIGN## &#8211; место, куда будет подставляться знак (&gt;,=)</li>
<li>##REPLACE## &#8211; сама функция, задающаяся в переменной $func</li>
<li>##I## &#8211; номер символа</li>
</ul>
<p>Задаем эту переменную в соответствии с нашим запросом, при этом правильно расставляем метки.</p>
<p><strong>$outfile </strong>- файл куда будет все выводится.<br />
<strong>$priznak</strong> &#8211; часть страницы, отличающая страницу с верным выводом от неверной. Т.е. при таком виде запроса</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --</code></p>
<p>или</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>эта часть текста HTML должна присутствовать только в новости с индексом 10.</p>
<p><strong>$func</strong> &#8211; функция, которую мы вызываем. Это может быть LOAD_FILE(), VERSION(), USER() итд, комбинации из них, короче все на что хватит фантазии.</p>
<p><strong>$site</strong> &#8211; сайт, где располагается SQL-inj.</p>
<p><strong>$start</strong> &#8211; номер символа, с которого начинать.</p>
<div style="font-size: 1.7em;">многопоточный приблизительно точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8ouu84" target="_blank">скачать скрипт</a></p>
<p>Принцип работы нечем не отличается, заисключением того, что скрипт вычисляет не последовательно символ за символом, а сразу паралельно несколько символов, количество которых равно количеству потоков заданных в конфигурации.</p>
<p>Конфигурация, такая же, добавился лишь один параметр <strong>$th_count</strong>. Он определяет количество потоков.<strong></strong></p>
<p>Чем же плох многопоточный вариант? При стабильном соединении с интернетом не чем т.е. он вычислит все символы как надо и быстро. Если же соединение часто обрывается, как например на 3G-модемах, то некоторые потоки будут умерать оставляя свой символ недовычисленным. Для примера, при нестабильном соединении (скорость скачет от 1КБ/с до 300КБ/с, соединение обрывается каждые 3-5 минут) из 10 символов 1 будет недовычислен.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>примитивная cms для ПП по скупке трафика</title>
		<link>http://blog.lukmus.ru/2010/08/11/primitivnaya-cms-dlya-pp-po-skupke-trafika/</link>
		<comments>http://blog.lukmus.ru/2010/08/11/primitivnaya-cms-dlya-pp-po-skupke-trafika/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 03:19:29 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[разное]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[движок партнерки]]></category>
		<category><![CDATA[партнерка]]></category>
		<category><![CDATA[платник]]></category>
		<category><![CDATA[ПП]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=354</guid>
		<description><![CDATA[Подобная CMS (а скорее всего набор скриптов) достаточно часто бывает необходима при раскрутке сайта. И вот сегодня она понадобилась одному моему знакомому и в честь чего я и решил выложить это самопальную примитивщину. Представляет она из себя набор PHP скриптов. Основная часть предназначена для партнера, там отображается его статистика, баланс и промо. Вторая часть вставляется [...]]]></description>
			<content:encoded><![CDATA[<p>Подобная CMS (а скорее всего набор скриптов) достаточно часто бывает необходима при раскрутке сайта. И вот сегодня она понадобилась одному моему знакомому и в честь чего я и решил выложить это самопальную примитивщину.</p>
<p style="text-align: center;"><a href="http://blog.lukmus.ru/wp-content/uploads/2010/08/minilogo.png"><img class="aligncenter size-full wp-image-355" title="cms партнерской программы" src="http://blog.lukmus.ru/wp-content/uploads/2010/08/minilogo.png" alt="" width="450" height="179" /></a></p>
<p><span id="more-354"></span>Представляет она из себя набор PHP скриптов. Основная часть предназначена для партнера, там отображается его статистика, баланс и промо. Вторая часть вставляется в страницу(ы) для, которых предназначена ПП. Так же в комплект входят SQL-код для создания необходимой для CMS БД.</p>
<p>Скачать это чудо экстремального программирования можно <a href="http://www.filesonic.com/file/16498911/PPCMS.tar" target="_blank">здесь</a>.</p>
<p><strong>Установка</strong></p>
<p>Ничего не может быть проще чем установка этой CMS.</p>
<ol>
<li>После того, как вы распаковали архив, закидываем все что там было на сервер, разумеется кроме файлов readme и sql.sql.</li>
<li>Внимательно читаем readme, даем почитать его всем своим друзьям и подругам, а так же родителям читаем вслух, после чего удаляем.</li>
<li>Открываем sql.sql и создаем БД в MySQL точно в соответствии с запросами в этом файле, или же можно просто импортировать его в БД, посредством phpMyAdmin.</li>
<li>Теперь открываем исходный код страниц ПП, по которым будет учитыватся траф и вставляем туда такой код<br />
<code><br />
include "partner/config.php"; //относительная ссылка на config.php<br />
if(isset($_GET['r'])){<br />
$r=(integer)$_GET['r'];<br />
$ip=$_SERVER['HTTP_X_REAL_IP'];<br />
$ref=$_SERVER['HTTP_REFERER'];<br />
if (strlen($ref)&lt;1) $ref=" - "; $cost=0.00; $bd=new mysqli($bd_host,$bd_user,$bd_pass,$bd_name); $res=$bd-&gt;query("SELECT cost FROM seller WHERE r=$r;");<br />
while($row=$res-&gt;fetch_row()){<br />
$cost=(float)$row[0];<br />
}<br />
$now_date=date('Y-m-d');<br />
$hash=md5($now_date.$ip);<br />
$exist=false;<br />
$res=$bd-&gt;query("SELECT uniq_hash FROM traf WHERE uniq_hash='$hash';");<br />
while($row=$res-&gt;fetch_row()){<br />
if (strlen($row[0])&gt;1)$exist=true;<br />
}<br />
$pay=0;<br />
if (!$exist) $bd-&gt;query("INSERT INTO traf VALUES  (NULL, $r,'$ip','$ref','$now_date',$pay,$cost,'$hash');");<br />
$res-&gt;free();<br />
$bd-&gt;close();<br />
}<br />
</code></li>
</ol>
<p><strong>Конфигурация</strong></p>
<p>Когда я в прошлом абзаце сказал, что не может быть ничего проще установки, я соврал &#8211; конфигурирование гораздо проще.</p>
<p>Открываем config.php и видим там<br />
<code><br />
// параметры БД<br />
$bd_host="localhost";<br />
$bd_user="bd_user";<br />
$bd_pass="bd_pass";<br />
$bd_name="bd_name";<br />
//-----------------------<br />
$unikey=md5("universal_key"); //универсальный ключ<br />
$site_name_partner="your PP name"; //заголовок ПП<br />
$default_partner_cost=0.00; //стоимость клика по умолчанию<br />
$admin_contacts="icq: 000000"; //контакты администрации<br />
</code><br />
Я думаю тут все предельно просто, объяснить следует лишь переменную $unikey. Дело в том, что в этой CMS нет админки, зато есть универсальный ключ равный $unikey. Админ зная почту какого-либо пользователя может зайти в его аккаунт посредством уникея и там посмотреть его баланс, статистику итд.</p>
<p>Возможно вы хотите меня спросить: &#8220;Если админ знает почту аккаунта, посмотрев ее в БД, почему же он не сможет посмотреть там пароль от его акка?&#8221;, а я вам отвечу &#8211; т.к. в БД хранятся только md5-хэши паролей.</p>
<p>Так же вам скорее всего придется поменять логотип ПП (img/logo.png), дизайн (screen.css) и правила ПП (partner_rules.pdf).</p>
<p>По всем вопросам обращайтесь сюда. Если этот &#8216;движок&#8217; будет кому-нибудь интересен, включая меня, вполне вероятно, что он начнет развиватся.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/08/11/primitivnaya-cms-dlya-pp-po-skupke-trafika/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>установка cPanel Trial + phpMyAdmin + MySQL</title>
		<link>http://blog.lukmus.ru/2010/08/10/ustanovka-cpanel-trial-phpmyadmin-mysql/</link>
		<comments>http://blog.lukmus.ru/2010/08/10/ustanovka-cpanel-trial-phpmyadmin-mysql/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 03:14:35 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[настройка и установка]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[бесплатный хостинг]]></category>
		<category><![CDATA[макхост]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=340</guid>
		<description><![CDATA[Значит началось все с того, что на VPS я решил установить cPanel. Я, по доброте душевной, думал, что cPanel представляет из себя набор PHP-скриптов, представлюящих некое подобие web-интерфейса к серверу и распространяющееся бесплатно. Исходя из своих предположении, я сначала поставил MySQL и phpMyAdmin и в завершении всего решил поставить cPanel&#8230; В итоге cPanel оказалась платным [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/08/cpwhmlogo.jpg"><img class="alignleft size-full wp-image-341" style="margin: 5px 10px;" title="cpwhmlogo" src="http://blog.lukmus.ru/wp-content/uploads/2010/08/cpwhmlogo.jpg" alt="" width="160" height="49" /></a>Значит началось все с того, что на VPS я решил установить cPanel. Я, по доброте душевной, думал, что cPanel представляет из себя набор PHP-скриптов, представлюящих некое подобие web-интерфейса к серверу и распространяющееся бесплатно. Исходя из своих предположении, я сначала поставил MySQL и phpMyAdmin и в завершении всего решил поставить cPanel&#8230;<span id="more-340"></span></p>
<p>В итоге cPanel оказалась платным системным приложением, поэтому я и скачал триальную версию с оффсайта <a href="http://cpanel.net" target="_blank">cpanel.net</a>.</p>
<p>Скачав, бинарный файл cpanel-universal-install.sea, я начал ее устанавливать:</p>
<blockquote><p><code># ./cpanel-universal-install.sea</code></p></blockquote>
<p>Инсталяция продлилась около полуторачаса. В итоге на сервере cPanel затерла все мои предыдущие труды, а точнее MySQL и phpMyAdmin и конфигурацию Apache. Я, как и большинство не читаю мануалы, тем более если они на английском, поэтому набрав в браузере ip сервера и увидев страницу ошибки cPanel, я немного смутился т.к. ожидал там увидеть что-то наподобе завершения конфигурации cPanel. Опытным путем я выяснил, что заходить надо по адресу ip-сервера:port, где port &#8211; номер порта, указанного в файле конфигурации /var/cpanel/cpanel.config.</p>
<p>По умолчанию логин и пароль администратора cPanel &#8211; cpanel:&lt;пароль root сервера&gt;.</p>
<p>Зайдя в панель, не сложно догадатся, что далее следует пройти в WHM, где можно создать пользователя и многое другое. И там я попытался создать БД, однако в место этого увидел ошибку, мол соединится с БД не реально.</p>
<p>В итоге выяснилось что от моей MySQL и phpMyAdmin остались только конфиги в /etc. По непонятным причинам репозитарии YUM, где были пакеты с MySQL и phpMyAdmin резко стали недоступны. Но я не стал горевать, а скачал тарболы с оффсайта.</p>
<p>MySQL &#8211; <a href="http://www.mysql.ru/" target="_blank">http://www.mysql.ru</a></p>
<p>phpMyAdmin &#8211; <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a></p>
<p><strong>Установка MySQL из тарбола:</strong></p>
<blockquote><p><code># tar xzf mysql-version.tar.gz //распаковываем архив<br />
# ./configure //конфигурируем и компилируем<br />
# make &amp;&amp; make install<br />
# scripts/mysql_install_db<br />
# chmod a+x support-files/mysql.server //ставим права на исполнение<br />
# support-files/mysql.server start //запускаем mysql-сервер<br />
# /usr/local/bin/mysqladmin -u root password 'new-pass' //устанавливаем рутовский пароль</code></p></blockquote>
<p><strong>Установка phpMyAdmin &#8211; примитивна до нельзя:</strong></p>
<ol>
<li>качаем архив и распаковываем его в папку /usr/local/cpanel/base/3rdparty/phpMyAdmin,</li>
<li>в файле /etc/phpMyAdmin/config.inc.php прописываем наш админский пароль, хост и прочее.</li>
</ol>
<p>И тут у вас может возникнуть резонный вопрос: если мы не устанавливали phpMyAdmin а просто распокавали его тарбол каким таким образом в /etc нарисуется его конфиг. Я отвечу многозначительным молчанием т.к. у меня конфиг там остался от первой установки.</p>
<p><strong>/etc/phpMyAdmin/config.inc.php</strong><br />
<code> /**<br />
* phpMyAdmin configuration file, you can use it as base for the manual<br />
* configuration. For easier setup you can use "setup/".<br />
*<br />
* All directives are explained in Documentation.html and on phpMyAdmin<br />
* wiki .<br />
*/<br />
//<br />
/*<br />
* This is needed for cookie based authentication to encrypt password in<br />
* cookie<br />
*/<br />
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */<br />
/**<br />
* Server(s) configuration<br />
*/<br />
$i = 0;<br />
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use<br />
// $cfg['Servers'][0]. You can disable a server config entry by setting host<br />
// to ''. If you want more than one server, just copy following section<br />
// (including $i incrementation) serveral times. There is no need to define<br />
// full server array, just define values you need to change.<br />
$i++;<br />
$cfg['Servers'][$i]['host']          = 'localhost'; // MySQL hostname or IP address<br />
$cfg['Servers'][$i]['port']          = '';          // MySQL port - leave blank for default port<br />
$cfg['Servers'][$i]['socket']        = '';          // Path to the socket - leave blank for default socket<br />
$cfg['Servers'][$i]['connect_type']  = 'tcp';       // How to connect to MySQL server ('tcp' or 'socket')<br />
$cfg['Servers'][$i]['extension']     = 'mysqli';    // The php MySQL extension to use ('mysql' or 'mysqli')<br />
$cfg['Servers'][$i]['compress']      = FALSE;       // Use compressed protocol for the MySQL connection<br />
// (requires PHP &gt;= 4.3.0)<br />
$cfg['Servers'][$i]['controluser']   = 'root';          // MySQL control user settings<br />
// (this user must have read-only<br />
$cfg['Servers'][$i]['controlpass']   = 'new-password';          // access to the "mysql/user"<br />
// and "mysql/db" tables).<br />
// The controluser is also<br />
// used for all relational<br />
// features (pmadb)<br />
$cfg['Servers'][$i]['auth_type']     = 'http';      // Authentication method (config, http or cookie based)?<br />
$cfg['Servers'][$i]['user']          = 'root';          // MySQL user<br />
$cfg['Servers'][$i]['password']      = 'new-password';          // MySQL password (only needed<br />
// with 'config' auth_type)<br />
$cfg['Servers'][$i]['only_db']       = '';          // If set to a db-name, only<br />
// this db is displayed in left frame<br />
// It may also be an array of db-names, where sorting order is relevant.<br />
$cfg['Servers'][$i]['hide_db']       = '';          // Database name to be hidden from listings<br />
$cfg['Servers'][$i]['verbose']       = '';          // Verbose name for this host - leave blank to show the hostname<br />
$cfg['Servers'][$i]['pmadb']         = '';          // Database used for Relation, Bookmark and PDF Features<br />
// (see scripts/create_tables.sql)<br />
//   - leave blank for no support<br />
//     DEFAULT: 'phpmyadmin'<br />
$cfg['Servers'][$i]['bookmarktable'] = '';          // Bookmark table<br />
//   - leave blank for no bookmark support<br />
//     DEFAULT: 'pma_bookmark'<br />
$cfg['Servers'][$i]['relation']      = '';          // table to describe the relation between links (see doc)<br />
//   - leave blank for no relation-links support<br />
//     DEFAULT: 'pma_relation'<br />
$cfg['Servers'][$i]['table_info']    = '';          // table to describe the display fields<br />
//   - leave blank for no display fields support<br />
//     DEFAULT: 'pma_table_info'<br />
$cfg['Servers'][$i]['table_coords']  = '';          // table to describe the tables position for the PDF schema<br />
//   - leave blank for no PDF schema support<br />
//     DEFAULT: 'pma_table_coords'<br />
$cfg['Servers'][$i]['pdf_pages']     = '';          // table to describe pages of relationpdf<br />
//   - leave blank if you don't want to use this<br />
//     DEFAULT: 'pma_pdf_pages'<br />
$cfg['Servers'][$i]['column_info']   = '';          // table to store column information<br />
//   - leave blank for no column comments/mime types<br />
//     DEFAULT: 'pma_column_info'<br />
$cfg['Servers'][$i]['history']       = '';          // table to store SQL history<br />
//   - leave blank for no SQL query history<br />
//     DEFAULT: 'pma_history'<br />
$cfg['Servers'][$i]['verbose_check'] = TRUE;        // set to FALSE if you know that your pma_* tables<br />
// are up to date. This prevents compatibility<br />
// checks and thereby increases performance.<br />
$cfg['Servers'][$i]['AllowRoot']     = TRUE;        // whether to allow root login<br />
$cfg['Servers'][$i]['AllowDeny']['order']           // Host authentication order, leave blank to not use<br />
= '';<br />
$cfg['Servers'][$i]['AllowDeny']['rules']           // Host authentication rules, leave blank for defaults<br />
= array();<br />
$cfg['Servers'][$i]['AllowNoPassword']              // Allow logins without a password. Do not change the FALSE<br />
= FALSE;       // default unless you're running a passwordless MySQL server<br />
$cfg['Servers'][$i]['designer_coords']              // Leave blank (default) for no Designer support, otherwise<br />
= '';          // set to suggested 'pma_designer_coords' if really needed<br />
$cfg['Servers'][$i]['bs_garbage_threshold']         // Blobstreaming: Recommented default value from upstream<br />
= 50;          //   DEFAULT: '50'<br />
$cfg['Servers'][$i]['bs_repository_threshold']      // Blobstreaming: Recommented default value from upstream<br />
= '32M';       //   DEFAULT: '32M'<br />
$cfg['Servers'][$i]['bs_temp_blob_timeout']         // Blobstreaming: Recommented default value from upstream<br />
= 600;         //   DEFAULT: '600'<br />
$cfg['Servers'][$i]['bs_temp_log_threshold']        // Blobstreaming: Recommented default value from upstream<br />
= '32M';       //   DEFAULT: '32M'<br />
/*<br />
* End of servers configuration<br />
*/<br />
/*<br />
* Directories for saving/loading files from server<br />
*/<br />
$cfg['UploadDir'] = '/var/lib/phpMyAdmin/upload';<br />
$cfg['SaveDir']   = '/var/lib/phpMyAdmin/save';<br />
?&gt;</code><br />
Справедливости ради стоит отметить что в этой версии cPanel (а на сегодняшний день это последняя версия), в ней установлен phpPgAdmin, при этом PostegeSQL установлена не была.</p>
<p>И в конце, на правах рекламы и благодарности скажу, что все эти опыты проводились на VPS любезно подаренной мне хостингом <a href="http://mchost.ru/" target="_blank" rel="nofollow">&#8216;Макхост &#8216;</a>. А так же хочу отметить, что если бы я не был таким дураком и нормально просмотрел меню virtuozzo power panel (интерфейс к которой по умолчанию предоставляет Макхост для управления VPS), то заметил бы такую штуку как &#8216;контейнеры&#8217;, судя по всему в которой можно было бы без гемороя установить какой-нибудь бесплатный аналог cPanel&#8217;е.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/08/10/ustanovka-cpanel-trial-phpmyadmin-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
