26

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

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 権限があり、ログインしているユーザーにも新しいデータベースを作成する権限があります。

ここで欠落している構成は何ですか?

4

13 に答える 13

33

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

chown -R mysql:mysql /usr/local/mysql/data
于 2013-09-10T13:10:08.420 に答える
19

これは、MySQL によって許可が拒否されたために発生する可能性があります。を設定しましたdatadir=/drbd0/mysql/dataが、デフォルトでは MySqlset socket = /var/lib/mysql/mysql.sockであるため、そのディレクトリに対する権限が必要です。

less /etc/group

その後

less /etc/passwd

mysql ユーザーとグループ名を見つけます。デフォルトでは、mysql グループの mysql ユーザーです。

mysql dir に変更し、おそらく1 つ上のディレクトリに移動するように/var/lib/mysql入力します。cd ..

chown -R mysql:mysql ./mysql/

mysql:mysqlグループとユーザーの権限が異なる場合は、別のものに置き換えます

于 2013-09-10T13:57:57.533 に答える
10

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

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

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

于 2016-12-26T11:18:43.330 に答える
3
  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 を完全にオフにします。configSELINUX=disabledを変更し、再起動します。

    異なる OS では、の構成ディレクトリ SELinuxが異なる場合があります。

于 2016-09-26T07:37:02.683 に答える
1

同じ問題です。私の場合、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/ching-mysql-data-directory-centos-7/

于 2016-12-21T16:58:05.700 に答える