19

mysqlから始めたばかりです。rootでログインし、オンライン参照に従って新しいユーザーを作成します。

mysql> CREATE USER 'abc'@'%' IDENTIFIED BY '111111';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'abc'@'%' WITH GRANT OPTION;

次に、終了して新しいユーザーでログインしようとしました。

mysql --user=abc --password=111111 mysql

しかし、エラーメッセージが表示されました:

ユーザー'abc'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)

私は何かを逃しましたか?

4

6 に答える 6

22

これを実行して動作させる

FLUSH PRIVILEGES

ユーザーに必要な権限を付与したら、セットアップを完了して新しい設定を機能させるために、権限をフラッシュする必要があります。これを行うには、SQLコマンドプロンプト内で次のコマンドを実行します。

[編集]
ローカルホストからも接続する場合は、別のアカウントを作成する必要があります。

'user'としてどこからでも接続できるようにするには、'user'の両方のアカウントが必要です。localhostアカウントがない場合、「user」がローカルホストから接続するときに、mysql_install_dbによって作成されたlocalhostのanonymous-userアカウントが優先されます。その結果、「user」は匿名ユーザーとして扱われます。これは、anonymous-userアカウントのHost列の値が'user' @'%'アカウントよりも具体的であるため、ユーザーテーブルの並べ替え順序が早いためです。)。

参考:http ://dev.mysql.com/doc/refman/5.5/en/adding-users.html

于 2012-12-31T06:26:09.430 に答える
4

私の場合、問題はパスワードにありました。特殊文字を少なくした後、動作を開始しました。

于 2021-02-18T20:27:02.343 に答える
2

ホストを「%」から「localhost」に変更するとうまくいきました。

しかし、その理由はわかりません。

「特権をフラッシュする」ことを忘れないでください。

mysql Ver 15.1 Distrib 10.1.32-MariaDB、Linux(x86_64)用にreadline5.1を使用しています

于 2018-05-05T14:38:20.407 に答える
2

通常、これは私のためのトリックを行います:

MySQLにログインします

mysql -u root -p

MySQLユーザーを作成する

CREATE USER 'username'@'ip' IDENTIFIED BY '*password*';

そのユーザーにフルコントロールを許可する

GRANT ALL PRIVILEGES ON * . * TO 'username'@'ip';

特権テーブルの再ロード

FLUSH PRIVILEGES;

MySQLインターフェースを離れる

exit;

特定のIPからポート3306への外部アクセスを許可する

sudo ufw allow from ip to any port 3306

MySQL構成ファイルに移動します

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

MySQLが外部の接続を検索できるようにする

変化する:

bind-address            = 127.0.0.1

に:

bind-address            = 0.0.0.0

MySQL 8以降では、この行はそもそも存在しません。その場合は追加してください

MySQLを再起動します

sudo systemctl restart mysql

しかし、私は何らかの理由でまだ「ユーザーのアクセスが拒否されました」という問題が発生しているので、誰かが私の問題の解決策を使って私の答えを拡張できれば、それは驚くべきことです。

于 2021-02-07T16:23:02.007 に答える
-1

Dockerイメージを使用してMySQLバージョン8以降を実行している場合は、バージョンをダウングレードする必要があります。MYSQL 5.7イメージを試したところ、リモートネットワークからユーザー(ルートではない)に接続できました。

于 2021-10-13T20:29:21.620 に答える
-2

これだよ。

grant all privileges on *.* to `root`@`%` identified by 'chnagethepasswordhere'; 
flush privileges;
--helps to excute store procedure as root user

GRANT EXECUTE ON PROCEDURE mbu4u.ratingProcedure TO 'root'@'ip.ip.ip.ip' identified by 'changepasswordheere';

GRANT ALL ON mbu4u.* TO root@'ip.ip.ip.ip' IDENTIFIED BY 'changepassword';

dantheman @良い一日を!

于 2015-10-28T08:33:15.203 に答える