web-dev-qa-db-ja.com

エラー1006(HY000)データベースを作成できません(errno:13)MySQL 5.6.12

データベースの作成で問題が発生し、次のエラーが発生します。

mysql> show grants for 'admin'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@%                                                                                                              |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> create database abc;
ERROR 1006 (HY000): Can't create database 'abc' (errno: 13)

これが私のユーザーテーブルです。

mysql> select Host, user from mysql.user;
+-------------+-------+
| Host        | user  |
+-------------+-------+
| %           | admin |
| 127.0.0.1   | root  |
| ::1         | root  |
| IVM-MMC-DGW | root  |
| localhost   | admin |
| localhost   | root  |
+-------------+-------+
6 rows in set (0.00 sec)


mysql> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@localhost                                                                                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

既存のデータベースでテーブルを作成および削除できます。

データディレクトリにはすでにmysql:mysql特権があり、ログインしているユーザーには新しいデータベースを作成する特権もあります。

ここで不足している構成は何ですか?

23
hardy_sandy

MySQLデータディレクトリに権限の問題がある可能性があります。次のように権限を設定してみてください(データディレクトリへのパスを調整します)

chown -R mysql:mysql /usr/local/mysql/data
29
Lucas

これはおそらく、MySQLによって許可が拒否されたために発生します。 datadir=/drbd0/mysql/data、ただしデフォルトではMySql set socket = /var/lib/mysql/mysql.sockなので、そのディレクトリに対する権限が必要です。

less /etc/group

その後

less /etc/passwd

mysqlユーザーとグループ名を検索します。デフォルトでは、mysqlグループのmysqlユーザーです。

mysqlディレクトリに変更します。おそらく/var/lib/mysqlを入力してからcd .. 1つのディレクトリに移動します。

chown -R mysql:mysql ./mysql/

置換mysql:mysqlグループとユーザーの特権が異なると呼ばれる場合、何か異なるもの

19
jfly

スペースに問題がある可能性があります。これに従ってください

  1. / var/lib/mysqlの.errログを確認します
  2. ログに「[エラー]サーバーを起動できません:PIDファイルを作成できません:デバイスに空き容量がありません」のようなメッセージが表示された場合

  3. Df -hk/varによる/ varサイズの確認

  4. 使用率が100%の場合、ファイルがいっぱいになるのを見つける必要があります。

  5. find/var/-type f -size + 100000k -exec ls -lh {} \; | awk '{print $ 9 ":" $ 5}'

  6. 削除できるファイルを確認してから、mysqlプロセスを再起動します

  7. /etc/init.d/mysql restart

それがうまくいったかどうか教えてください:)

11
sandejai

Mac OSの場合、このコマンドを使用します

Sudo chown -R mysql:mysql /usr/local/mysql*

ユーザーmysqlには、mysqlデータディレクトリへの書き込みアクセスが必要です。

9
Harikrishnan

Sudo chown -R mysql:mysql/var/lib/mysql /

5
Liuda

WAMPとiを実行すると同じ問題が発生し、従来のすべてのサービスの停止と開始を選択しました。その後、データベースを作成することができました。スペースや権限に問題がなかったため、最初にデータベースを作成できなかった理由が本当にわかりません。まあ、これがWAMPユーザーの助けになることを願っています

1
Mena

同じ問題、私の場合、my.cfのデフォルトディレクトリを変更しましたが、selinuxがそれをブロックしています。

テストするには:

setenforce 0

(CentOS)を修正するには

コンテキストを追加して永続的にする

semanage fcontext -a -s system_u -t mysqld_db_t "/var/data/mysql(/.*)?" restorecon -Rv /var/data/mysql

ソース: https://naveensnayak.wordpress.com/2016/01/14/changing-mysql-data-directory-centos-7/

特にCentOSを使用している場合は、SELinuxをオフにしてください。

SELinuxをオフまたは無効にする を確認します。

1
Wronski

mysqlフォルダーを移動してmysqlを再起動すると、動作します

1
Guilherme Lopes

/etc/mysql/my.cnfで、datadir =/home/mysql_dataを設定します。これは、データベースファイルが実際にマシン上にある場所です。

1
Mihai
  1. Mysqlデータディレクトリの権限を確認してください。
    データディレクトリはデフォルトで「/etc/my.conf」に設定されています。
    またはmysqladmin -uroot -p variables | grep datadirでディレクトリを見つけます。
    そうかも知れない /var/lib/mysql/はデフォルトで、所有者のユーザーとグループがmysqlであることを確認します。 chown -R mysql:mysql /usr/local/mysql/data

  2. 手順1で解決されていない場合は、SELinuxが原因である可能性があります。 オフにする を試してください。

    • SELinuxが実行されているかどうかをテストします。 selinuxenabled && echo enabled || echo disabled
    • SELinuxを一時的にオフにします。 echo 0 > /selinux/enforce
    • SELinuxを完全にオフにします。構成の変更SELINUX=disabled、再起動します。

    OSによっては、SELinuxの設定ディレクトリが異なる場合があります。

1
Yanhui Zhou

私の場合、これはMySQLデータディレクトリの所有者の問題でした。しかし、私のサーバーでのセットアップは非常に一般的ではなく、異なるディレクトリを使用しているため、より詳細なソリューションを以下に示します。

  1. MySQLデータディレクトリを見つける

grep 'datadir' $(find /etc -iname my.cnf 2>/dev/null) | awk '{print $3}'

MySQL構成が正しい場所にある場合、例えば_/var/lib/mysql_

結果が返されない場合は、次を使用してファイルシステム全体を検索してください。

grep 'datadir' $(find / -iname my.cnf 2>/dev/null) | awk '{print $3}'(これには時間がかかる場合があります)

壊す:

_find /etc -iname my.cnf 2>/dev/null_は、エラーを無視して_/etc_でmy.cnfという名前のファイルを見つけます

_grep 'datadir' /etc/mysql/my.cnf_は、前のステップで見つかったファイルでdatadirを見つけます

_awk '{print $3}'_は、標準入力から3番目の列を出力します

  1. 所有権を修正する

_Sudo chown -R mysql:mysql MYSQLDIR_ MYSQLDIRをステップ1で返されたディレクトリへのパスに置き換えます

0
Tomasz W