今日私はUbuntu 14.04.1 LTS llにrootとしてログインしました
そしてapt-get install mariadb-server
(Sudoなしでrootとして)。
mySQL -h localhost -u root --password=<PW>
で手に入れました
ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)
mySQL -u root -p
を使ってDBにログインし、
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;
しかし、これは役に立ちませんでした。何か考えがありますか。私は同様の質問に対する答えを見つけられませんでした。
TL; DR:新しいバージョンのインストール後、rootユーザーとしてmysql/mariadbの新しいバージョンにアクセスするには、rootシェルにいる必要があります(すなわち、Sudo mysql -u root
またはmysql -u root
が最初に始まるシェル内のsu -
またはSudo -i
Ubuntuでも同じアップグレードを行ったところ、同じ問題が発生しました。
奇妙なことはそれでした
Sudo /usr/bin/mysql_secure_installation
自分のパスワードを受け入れて、それを設定することを許可しますが、root
name__クライアントを介してmysql
name__としてログインできませんでした
私はmariadbを始めなければなりませんでした
Sudo mysqld_safe --skip-grant-tables
rootとしてアクセスするために、他のすべてのユーザーはまだ問題なくアクセスできます。
私がrootに気付いたmysql.user
テーブルを見ると、plugin
name__列はunix_socket
に設定されていますが、他のすべてのユーザーはそれが 'mysql_native_password'に設定されています。このページをちょっと見てください。 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ は、uid
name__と一致させることで、Unix Socketがログインを可能にすることを説明しています。 mysql.user
テーブル内のユーザーのプロセスでクライアントを実行しているプロセスのプロセスつまり、root
name__としてmariadbにアクセスするには、rootとしてログインする必要があります。
認証が必要な状態でmariadbデーモンを十分に再起動してください。
Sudo mysql -u root -p
または
Sudo su -
mysql -u root -p
これをやった後、私はSudoをしなくてもアクセスする方法について考えました、それはこれらのmysqlクエリを実行することの問題です
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(<password>
を希望のmysql rootパスワードに置き換えます)。これにより、rootユーザーのパスワードログインが有効になりました。
あるいは、mysqlクエリを実行します。
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
パスワードを変更せずにパスワードログインを使用するようにrootアカウントを変更しますが、これによりrootパスワードが設定されていないmysql/mariadbインストールが残る可能性があります。
これらのどちらかの後、あなたはmysql/mariadbを再起動する必要があります。
Sudo service mysql restart
そして私の個人アカウントからmysql -u root -p
経由でアクセスできた
このISセキュリティを減らすことに注意してくださいおそらくMariaDB開発者は、正当な理由でこのようにrootアクセスをすることを選んだのでしょう。
考えてみるとSudo mysql -u root -p
にしなければならないのでとても嬉しいので、それに切り替えていますが、他に解決策が見つからないので自分のソリューションを投稿することにしました。
クリーンなUbuntu 16.04 LTSでは、MariaDB root login localhostがパスワードスタイルからSudoログインスタイルに変更されました...
そう、ちょうどする
Sudo mysql -u root
パスワードでログインしたいので、別のユーザー「user」を作成します。
mariaDBコンソールで...( 'Sudo mysql -u root'でMariaDBコンソールに入ります)
use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q
それからbashシェルプロンプトで、
mysql-workbench
そしてあなたはlocalhostの 'yourpassword'を使って 'user'でログインすることができます
コマンドを試してください
Sudo mysql_secure_installation
enterキーを押して、mysql/mariadbでrootに新しいパスワードを割り当てます。
あなたがのようなエラーが発生した場合
エラー2002(HY000):ソケット '/var/run/mysqld/mysqld.sock'を介してローカルのMySQLサーバーに接続できません
でサービスを有効にする
service mysql start
で再入力した場合
mysql -u root -p
問題が解決しない場合はSudo su
で入力し、mysql -u root -p
がrootに権限を適用するようになりました
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';
これでMariaDBの問題が解決しました。
がんばろう
RootとしてMariadbにアクセスするには、rootとしてUbuntuにログインする必要がありました。それはあなたが最初にインストールするときにそれをするようにあなたに促すという「ハルデン...」と関係があるかもしれません。そう:
$ Sudo su
[Sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword
そしてあなたは中にいる.
私はかつて同様の問題を抱えていました。私の場合は、MySQLサーバーのユーザーテーブルが何らかの理由で破損したために発生しました。
この記事は私を助けました: mysql-how-to-fix-access-denied-for-user-'-root' @ 'localhost'
基本的にはrootユーザーをリセットする必要があります。
特権をフラッシュするための新しいコマンドは次のとおりです。
FLUSH PRIVILEGES
古いコマンドFLUSH ALL PRIVILEGES
はもう機能しません。
次のようなエラーが表示されます。
MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1
お役に立てれば :)
スーパーユーザーから 受け入れられた回答 :
Sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
Mysql_upgradeを実行してください。
それを確認します
SHOW GRANTS FOR 'root'@'localhost';
と言う
GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION
テーブルが_mysql.proxies_priv_存在することを確認してください。
特権を付与しようとしているときに、ユーザー 'root' @ 'localhost'のアクセスが拒否されました。特権を付与するにはどうすればよいですか?