奇妙なエラーがあります。コマンドライン経由でローカルのMysqlにrootとしてログインしています。データベースを作成した後:
create database some_db;
次に、一部のユーザーに特権を付与します。
grant all privileges on some_db.* to some_user@'localhost' identified by 'password';
これはエラーを与えています:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'
Root(show grants;)のパーミッションは次を示します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'
また、ルートとしてログインしていることを確認しています:
select current_user();
これにより、「root」@「localhost」としてログインしていることが確認されます
データベースを作成し、ユーザーを複数回割り当てましたが、問題はありませんでした。ルートとしてログインしているときに、ルートによって作成されたデータベースにユーザーを割り当てることができないのはなぜですか?
追伸他の投稿から、私は問題がいくつかの奇妙なユーザーに起因する可能性があると考えています
select Host, user from mysql.user;
追加していないが表示されるユーザー:
MY_COMPuTER_name.local | ''
MY_COMPuTER_name.local | root
これらのユーザーを削除しようとしました
drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';
ただし、クエリの実行が成功したことを示す間、ユーザーはフラッシュ特権の後でも削除されません。ユーザーを削除できないのはなぜですか?どんな助けも大いに歓迎されます
まず、ログインしているユーザーを識別します。
select user();
select current_user();
最初のコマンドの結果はログインしようとしたもので、2番目のコマンドは実際に接続したものです。 mysqlでroot@localhost
としてログインしていることを確認します。
Grant_priv
からroot@localhost
へ。確認方法は次のとおりです。
mysql> SELECT Host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| Host | user | password | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root | ***************************************** | N | Y |
| localhost | debian-sys-maint | ***************************************** | Y | Y |
| localhost | staging | ***************************************** | N | N |
+-----------+------------------+-------------------------------------------+------------+------------+
Root @ localhostのGrant_privがNに設定されていることがわかります。これはYである必要があります。以下は、これを修正する方法です。
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
再度ログインしましたが、大丈夫でした。
MySQL(XAMPPサーバーにインストールされている)cmd PromptでSQLコマンドを実行しようとするとエラー1044(42000)が発生する場合、解決策は次のとおりです。
MySQLコマンドプロンプトを閉じます。
C:\ Users\User> _と表示されるcmdプロンプト([スタート]メニュー-> [実行]-> [cmd]から)を開きます。
次のコマンドを入力して、MySQL.exeに移動します。
C:\Users\User>cd\ C:\>cd xampp C:\xampp>cd mysql C:\xxampp\mysql>cd bin C:\xampp\mysql\bin>mysql -u root
次のように入力して、新しいデータベースを作成してみてください。
mysql> create database employee;
それが示す場合:
Query OK, 1 row affected (0.00 sec)
mysql>
それではおめでとうございます!準備できた...
「ドロップ」ステートメントを介して一部のユーザーを削除できなかった理由は、Mysqlにバグがあるためです http://bugs.mysql.com/bug.php?id=62255 ホスト名を含む大文字。ソリューションは次のクエリを実行していました。
DELETE FROM mysql.user where Host='Some_Host_With_UpperCase_Letters';
私はまだ、すべての権限を持つルートユーザーが特定のデータベースの新しいユーザーに特権を付与できないという他の問題を考えています