![MySQL はテーブルスペースによってユーザーのディスク容量を制限します](https://rvso.com/image/697373/MySQL%20%E3%81%AF%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E5%AE%B9%E9%87%8F%E3%82%92%E5%88%B6%E9%99%90%E3%81%97%E3%81%BE%E3%81%99.png)
MySQL でユーザーのディスク容量制限を設定する方法を探しています。たとえば、管理者がユーザー A に 1G のディスク容量を割り当て、A が 1G のディスク容量を使い切った場合、MySQL は A による挿入を許可しない、という設定にしたいです。この問題を Google で検索したところ、テーブルスペースを使用すれば解決できると誰かが言っていましたが、解決方法については触れていませんでした。どなたか助けていただければ幸いです。
答え1
私の知る限り、ネイティブのMySQLディスククォータサポートはありません(そしてデータベースのディスク使用量を制限する厳しい割り当ては災難のもとになるように思えます。
MySQLディスク使用量ユーティリティを使用すると、ディスク使用量をレポートできます。 参考: mysqldiskusage.html
答え2
各ユーザーのホームにmysql/datadirを配置することができます(例:
/home/user1またはDATADIR="/var/www/${VHOST}/mysql/datadir")。そして、各ユーザーのディスク容量に制限を設けます。
また、各ユーザーが自分の sock ファイルと pid ファイルを持つようにするには、次のようにします。
mysqld --skip-ndbcluster --user=mysql --skip-grant-tables --basedir=/usr --datadir=${DATADIR} --skip-innodb --skip-bdb --skip-networking --max_allowed_packet=8M --net_buffer_length=16K --socket=${sockfile} --pid-file=${pidfile} &>/dev/null