Ubuntu 16.04サーバーをインストールしました。 Mysqlサーバーはデフォルトでインストールされました。 mysql -u root -p
を使用してmysqlにアクセスしようとすると、パスワードがないためmysqlにログインできません。デフォルトのパスワードはありますか?
私も--skip-grant-tables
を試しましたが、これでもうまくいきません。 mysql -u root
だけでログインしようとしても失敗です。
これはあなたが探しているものです:Sudo mysql --defaults-file=/etc/mysql/debian.cnf
DebianベースのLinux上のMySqlは通常、資格情報を持つ設定ファイルを使用します。
デフォルトでは、MySQLにはauth_socket
としてrootユーザーの認証プラグインがあり、システムユーザー名とdbユーザー名が同じである必要があります。
具体的には、ルートまたはSudo -i
としてログインし、mysql
と入力するだけで、mysql root
としてログインし、他の操作ユーザーを作成できます。
あなたがホストにルートを持っていない場合、ルートとしてmysqlにログインすることを許可すべきではないと思いますか?
Ubuntu 18.10にmysql-server
を新規インストールしましたが、デフォルトのパスワードでログインできませんでした。その後、デフォルトでrootユーザーがauth_socket
を使用して認証されることを知りました。プラグインがmysql_native_password
に変更されたときの答えのように、mysqlのデフォルトパスワードを使用できます
$ Sudo apt install mysql-server
$ Sudo cat /etc/mysql/debian.cnf
そこには次の行があります
user = debian-sys-maint
password = password_for_the_user
次に:
$ mysql -u debian-sys-maint -p
Enter password:
debian.cnfからパスワードを入力します
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;
どちらか:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
または:
// MySQL 5.7+の場合
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
サーバーを--skip-grant-tablesで実行し、次のコマンドをrootまたはSudoで実行することにより、パスワードなしでログインするだけで、rootパスワードをリセットできます。
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
Sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
この方法を試してください。この方法で問題が解決しました。別の場所は/var/lib
だと思います。そこに行くと、「興味深い」権限を持つ3つのmysqlフォルダーが表示されます。
user group
mysql mysql
Rootパスワードの問題を解決するために私がしたことは次のとおりです。
走った後
Sudo apt-get purge mysql*
Sudo rm -rf /etc/mysql
また、以下を実行しました(my_usernameの代わりに)
cd /var/lib
Sudo chown --from=mysql <my_username> mysql* -R
Sudo rm -rf mysql*
その後:
Sudo apt-get install mysql-server
新しいルートパスワードを選択するように促されました。私はそれが役立つことを願っています
Sudo dpkg-reconfigure mysql-server-5.7
を実行するだけです
dpkg --get-selections | grep mysql-server
を実行すると、インストールしたバージョンを見つけることができます
これは古い質問ですが、答えを見つけるのに苦労している人もいます。少なくともそうしました。 すべての長い解決策に従ってはいけない。 mysqlコマンドの前にSudoを追加することにより、パスワードを提供せずにrootとしてmysqlにログインするだけです(新規インストールであるか、インストール後にパスワードを変更していない場合)。 $Sudo mysql -uroot -p mysql>
これは、mysqlが最新バージョンの1つでセキュリティモデルを変更したためです。
お役に立てれば