<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: MySQL - квотирование баз  под FreeBSD</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html</link>
    <description>Хитрости квотирования MySQL.&lt;br&gt;&lt;br&gt;&amp;lt;p&amp;gt;Каждую базу MySQL хранит в отдельном каталоге внутри datadir.&lt;br&gt;MySQL работает под своим пользователем и соответственно создает файлы баз под им же. Соответственно квотирование в данном случае не возможно. Необходимо  заставить его создавать файлы баз, влaдельцем которых будет конкретный квотируемый  пользователь. Сделать это можно выставив бит SUID (4000) на каталог базы.&lt;br&gt;&lt;br&gt;&amp;lt;p&amp;gt;Для начала:&lt;br&gt;&amp;lt;pre&amp;gt;&lt;br&gt;&lt;br&gt;     в ядре:&lt;br&gt;        options SUIDDIR&lt;br&gt;&lt;br&gt;     в /etc/fstab:&lt;br&gt;        добавляем в список опций suiddir&lt;br&gt;&amp;lt;/pre&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;p&amp;gt;В MySQL создаем базу.  Находим каталог базы в datadir. По умолчанию он будет mysql:mysql.&lt;br&gt;&lt;br&gt;&amp;lt;pre&amp;gt;&lt;br&gt;&lt;br&gt;   Меняем владельца:&lt;br&gt;     chown sql-user databasedir&lt;br&gt;     теперь наш каталог sql-user:mysql&lt;br&gt;  &lt;br&gt;   Меняем права:  &lt;br&gt;       chmod 4070 databasedir&lt;br&gt;&amp;lt;/pre&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;p&amp;gt;Такая настройка заставит систему создавать файлы от имени владельца каталога (sql-user) причем сам пользователь не будет иметь к нему доступа. К нему будет  иметь полный доступ MySQL (от группы mysql).&lt;br&gt;  </description>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (chesnok)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#21</link>
    <pubDate>Tue, 01 Sep 2009 20:07:50 GMT</pubDate>
    <description>на п0нTаL0o0n-хостинге у бородачей работает скрипт:&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;use lib qw(/site/perl/lib /site/perl/sys);&lt;br&gt;use strict; use AGAVA::Hosting::Config; use AGAVA::DBI; use AGAVA::Hosting::HostingData;&lt;br&gt;use Data::Dumper; use AGAVA::Hosting::Utils;&lt;br&gt;&lt;br&gt;BEGIN &#123;&lt;br&gt;     open(STDERR, &quot;&amp;gt;&amp;gt;/home/r/register.h17.ru/log/disk_usage_mysql_quota.pl.log&quot;);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;#exit 1;&lt;br&gt;#lock();&lt;br&gt;my $cfg = new AGAVA::Hosting::Config;&lt;br&gt;my $dbh = AGAVA::DBI-&amp;gt;connect(AGAVA::Hosting::Config-&amp;gt;new());&lt;br&gt;my $dbh1 = AGAVA::DBI-&amp;gt;connect(AGAVA::Config-&amp;gt;new($cfg, $cfg-&amp;gt;get(&apos;MYSQL_DB_CONF&apos;))) or return undef;&lt;br&gt;my $sth;&lt;br&gt;my $adomain = $cfg-&amp;gt;get(&apos;DEFAULT_ADOMAIN&apos;);&lt;br&gt;my $adomain1 = $adomain;&lt;br&gt;$adomain =~ s/&#092;./&#092;&#092;./;&lt;br&gt;my $hd = AGAVA::Hosting::HostingData-&amp;gt;new();&lt;br&gt;&lt;br&gt;my $take_update = 0;&lt;br&gt;&lt;br&gt;trace(&quot;Start disk_usage_mysql_quota &#091; ***** &#093;&quot;);&lt;br&gt;&lt;br&gt;my $count;&lt;br&gt;my $count1;&lt;br&gt;my $count2;&lt;br&gt;my $count0;&lt;br&gt;my $count3;&lt;br&gt;my &#037;disc_quota = undef;&lt;br&gt;my &#037;mega_hash_nah1 = undef;&lt;br&gt;open (FH, &quot;&amp;lt; /etc/passwd&quot;) or die (&quot;err1 !!!&quot;);&lt;br&gt;while (&amp;lt;FH&amp;gt;)&lt;br&gt;&#123;&lt;br&gt;        if($_ =~ /^(.*):&#092;*:(&#092;d+):&#092;d</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#20</link>
    <pubDate>Sat, 22 Mar 2008 16:41:12 GMT</pubDate>
    <description>Тебя все прекрасно поняли дорогой. Но предположим вариант:&lt;br&gt;у тебя на серваке мало места свободного осталось и помимио мускула висит пара процессов общитывающих трафик, которые весьма критичны к свободному пространству. А юзер любит заливать в базу бааальшие порции инфы.&lt;br&gt;Вот теперь вопрос: что критичнее - база юзера, которую можно поднять из бекапа или неучтенный трафик и соотвесвенно проепаные деньги за которые тебя еще и вздрючат?&lt;br&gt;</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (ol)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#19</link>
    <pubDate>Tue, 26 Feb 2008 12:00:57 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;место для базы кончится, MySQL с большой вероятностью запорет таблицу(ы) в &lt;br&gt;&amp;gt;базе. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Если Вам надо иметь проблемы с регулярным восстановлением базы у клиентов -- &lt;br&gt;&amp;gt;дерзайте. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Вдобавок оно не работает с InnoDB. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;В результате Вы получите кривое решение, которое ничего, кроме головной боли не &lt;br&gt;&amp;gt;принесет. &lt;br&gt;&lt;br&gt;ну хоть 10 раз повтори&lt;br&gt;у тебя есть другое решение? вот и не умничай )))&lt;br&gt;&lt;br&gt;лично я квоты поставил в два раза больше чтобы серв не свалился, а по крону проверяю размер базы и шлю на мыло пользователям сообщения, что это им боком может выйти, пусть пишут если база нужна больше или чистят..&lt;br&gt;</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#18</link>
    <pubDate>Wed, 13 Jun 2007 05:17:17 GMT</pubDate>
    <description>&amp;gt;а если написать скрипт проверяющий размер базы и при привышении отменять привилегии &lt;br&gt;&amp;gt;на insert ? &lt;br&gt;&lt;br&gt;тоже вариант</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (abrikos)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#17</link>
    <pubDate>Tue, 05 Jun 2007 02:41:00 GMT</pubDate>
    <description>а если написать скрипт проверяющий размер базы и при привышении отменять привилегии на insert ?</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (stellar)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#16</link>
    <pubDate>Wed, 21 Mar 2007 09:14:00 GMT</pubDate>
    <description>Повторяю: Квотирование средствами файловой системы - отвратительное решение. Потому что как только место для базы кончится, MySQL с большой вероятностью запорет таблицу(ы) в базе. &lt;br&gt;&lt;br&gt;Если Вам надо иметь проблемы с регулярным восстановлением базы у клиентов -- дерзайте. &lt;br&gt;&lt;br&gt;Вдобавок оно не работает с InnoDB. &lt;br&gt;&lt;br&gt;В результате Вы получите кривое решение, которое ничего, кроме головной боли не принесет. &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (Jack)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#15</link>
    <pubDate>Sat, 03 Mar 2007 04:22:13 GMT</pubDate>
    <description>А вот в 5.0.X поведение MySQL сервера не очень понятное. При правах на директорию БД 070, где 7 - права для группы в которую входит псевдопользователь от которого работает MySQL, сервер не видит эту БД. Т.е. &apos;show databases&apos; - не находит базу. А вот запрос &apos;use my_db&apos; - Успешен и уже внутири этой БД возможно осуществлять все операции с таблицами. Может кто знает с чем это связано, и как версию 5.0.Х приточить к использованию квотирования описанному в исходной статье.</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (Exe)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#14</link>
    <pubDate>Sat, 11 Nov 2006 11:26:52 GMT</pubDate>
    <description>кто вам сказал что innodb обязательно все базы в одном файле? учите маны, они рулез.&lt;br&gt;хинт: innodb_file_per_table</description>
</item>

<item>
    <title>MySQL - квотирование баз  под FreeBSD (Pahanivo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/12594.html#13</link>
    <pubDate>Fri, 25 Aug 2006 11:02:45 GMT</pubDate>
    <description>&amp;gt;http://projects.marsching.org/mysql_quota/ &lt;br&gt;&amp;gt;The MySQL Quota-Tool helps you to set a size limit on MySQL &lt;br&gt;&amp;gt;databases. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;It works by checking the size of each database and revoking the &lt;br&gt;&amp;gt;INSERT- and CREATE-priveleges for the databases, which exceed the given size &lt;br&gt;&amp;gt;limit. &lt;br&gt;&amp;gt;When the size of the database falls below the given limit, the &lt;br&gt;&amp;gt;INSERT- and CREATE-priveleges are granted again. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;не мегакрасивое решение, но зато без фатальных последствий для пользователя, базы и &lt;br&gt;&amp;gt;тп. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;хотя лучшим решением наверно будет комбинация 2-х решений, чтобы какой-нить запрос вроде &lt;br&gt;&amp;gt;load data( которым можно гигабайты заливать), не завалил диск &lt;br&gt;&lt;br&gt;Возможно комбинация будет лучше, но прикинте скока гемора чтобы завети одну паршивую базу ))&lt;br&gt;Блин, столько лет существует мускул - почему не могут это сделать средствами сервака?&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
