前回のチュートリアルのネチズンのメモを編集したもの
MySQLのリセットパスワード
MySQL パスワードを忘れた場合は、my.cnf ファイルを変更し、skip-grant-tables を追加することでリセットできます。手順は次のとおりです。
1. my.cnf 構成ファイルを開き、[mysqld] を見つけて、この行の下に次のパラメータを追加します。あ>
スキップ許可テーブル
MySQL サービスを再起動します。
サービスmysqlの再起動
MySQL にログインします。現時点ではパスワードは必要ありません。Enter キーを押すだけです。
# mysql -u root -p
更改 root 密码 为 123456:
mysql> mysql を使用する; mysql>ユーザーを更新するには、authentication_string=password("123456") を設定します。ここで user='root'; mysql>フラッシュ権限。 # 刷新权限
バージョン 5.7 のパスワード フィールド名は authentication_string であり、以前のフィールド名は password であることに注意してください。 。
変更後、 my.cnf の Skip-grant-tables パラメータを必ずコメント アウトし、MySQL サービスを再起動すると、設定したパスワードでログインします。
MySQL サーバーをシャットダウンします。
サービスmysql停止
ディレクトリに入り、MySQL をセーフ モードで起動します。
cd /usr/local/mysql/bin ./mysqld_safe --skip-grant-tables および
知らせ:
おそらく、システムにsafe_mysqldプログラム(WindowsまたはUbuntuオペレーティングシステム)がない場合は、mysqldを使用できます。
mysqld --skip-grant-tables と
起動後、root ユーザーは空のパスワードを使用して mysql にログインします。
# mysql -u root mysql> mysql.user を更新して、password=PASSWORD('123456') where User='root'; を設定します。 # 修正密解 mysql>フラッシュ権限。 # 刷新权限 mysql>やめる
MySQL を起動します。
サービスmysqlの開始
新しいパスワード 123456 を使用してログインできるようになりました。
パスワードがわかっている場合は、次のコマンドを使用できます。
# mysqladmin -u root -p パスワード新しいパスワード
上記の方法でパスワードの変更に失敗した場合(私は変更しませんでした)、 プラグイン を :mysql_native_password
ユーザー設定を更新しますauthentication_string=password("123456"),plugin='mysql_native_password'ここで、ユーザー='root';
最初にインストールした後、コマンドを実行するときにプロンプトが表示されます。
エラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。
次のコマンドを使用して、パスワードを 123456 に変更できます。
ALTER USER 'root'@'localhost' 「123456」によって識別されます。パスワードの有効期限はありません。
次に、次のコマンドを使用して権限を更新します。
フラッシュ権限。
ディレクティブの末尾のセミコロンに注意してください。
ログアウトして再度ログインします。
Windows 64 ビット版 mysql 8.0.12 版のパッケージ解凍にデータディレクトリと my-default.ini ファイルが存在しないこと、サービスが開始できない問題の解決方法と初期パスワードの変更方法を紹介します。
1. my-default.ini ファイルはありませんが、ルート ディレクトリに my.ini ファイルを作成できます。具体的な内容は次のとおりです。
[mysql] #mysql クライアントのデフォルトの文字セットを設定する デフォルト文字セット=utf8 [mysqld] # ポート 3306 を設定 ポート = 3306 # mysql のインストールディレクトリを設定 basedir=C:\web\mysql-8.0.11 #許可される接続の最大数 max_connections=200 #サーバーで使用される文字セットは、デフォルトで 8 ビット エンコードされた latin1 文字セットになります 文字セットサーバー=utf8 #新しいテーブルの作成時に使用されるデフォルトのストレージ エンジン デフォルトストレージエンジン=INNODB
2. mysql データベースのデータの保存ディレクトリを設定する場合:
データディレクトリ=C:\web\sqldata
これによりサービスの起動に失敗します。この文を追加したり、新しいデータ フォルダーを自分で作成したりせず、mysql にデータを自動生成させてください。
管理者として cmd コマンド ウィンドウを開き (cmd を直接開いて実行すると、エラーが報告される場合があります)、mysql インストール ディレクトリの bin ディレクトリに入ります。次に、次のコマンドを入力します。
mysqld のインストール mysqld --initialize ネットスタート mysql
最後にデータディレクトリが生成されます。
Windows 10 に mysql をインストールする際に問題が発生します。
1. コーディングエラー
mysql 構成ファイル D:\System\mysql\my.ini の 1 行目で、先行するグループのないオプションが見つかりました
解決策: my.ini ファイル形式を ANSI エンコードに変換してください。
2.タイムゾーンエラー
サーバーのタイムゾーン値 'йú±ê×⁄ʱ¼ä'認識されないか、複数のタイムゾーンを表します。タイム ゾーン サポートを利用する場合は、より具体的なタイム ゾーン値を使用するようにサーバーまたは JDBC ドライバーを (serverTimezone 構成プロパティを介して) 構成する必要があります。
設定ファイルに追加する必要があります [mysqld] :
デフォルトのタイムゾーン = '+8:00'
コマンドを入力すると、次のエラーが報告されます。
このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。
これは、パスワードをリセットする必要があることを意味します。パスワードをリセットするコマンドは次のとおりです。
「密暗号」で識別されるユーザー user() を変更します。
例えば:
「123456」で識別されるユーザー user() を変更します。
MySQL で root パスワードを変更する 4 つの方法 (Windows を例にします)
方法 1: SET PASSWORD コマンドを使用する
まずMySQLにログインします。
フォーマット:
mysql> ユーザー名@localhost = パスワード('新しいパスワード'); のパスワードを設定します。
例:
mysql> root@localhost =password('123'); のパスワードを設定します。
方法 2: mysqladmin を使用する
フォーマット:
mysqladmin -u ユーザー名 -p 古いパスワード パスワード 新しいパスワード
例:
mysqladmin -uroot -p123456 パスワード 123
方法 3: UPDATE を使用してユーザー テーブルを直接編集する
まずMySQLにログインします。
mysql> mysqlを使用します。 mysql>ユーザーの更新設定パスワード=password('123') ここでユーザー='root'そして host='localhost'; mysql>フラッシュ権限。
方法 4: root パスワードを忘れた場合は、Windows を例としてこれを行うことができます。
- 1. 実行中の MySQL サービスを閉じます。
- 2. DOS ウィンドウを開き、mysql\bin ディレクトリに移動します。
- 3. 「mysqld --skip-grant-tables」と入力し、Enter キーを押します。 --skip-grant-tables は、MySQL サービスの開始時に権限テーブルの認証をスキップすることを意味します。
- 4. 別の DOS ウィンドウを開き (先ほどの DOS ウィンドウは移動できないため)、mysql\bin ディレクトリに移動します。
- 5. 「mysql」と入力して Enter キーを押します。成功すると、MySQL プロンプト > が表示されます。
- 6. 権限データベースに接続します: mysql を使用します。
- 6. パスワードを変更します: user set password=password("123") where user="root" を更新します (最後にセミコロンを追加することを忘れないでください)。
- 7. 権限のリフレッシュ (必須ステップ): 権限のフラッシュ。
- 8. やめます。
- 9. システムからログアウトし、再入力し、ユーザー名 root と設定した新しいパスワード 123 を使用してログインします。
Navicat が Mysql8.0.11 に接続すると 2059 エラーが発生する
MySQL 8 以降を使用している場合、navicat premium が mysql データベースに接続すると、2059 エラーが報告されます。
理由: バージョン 8 以降で使用されるパスワード暗号化ルールは caching_sha2_password です。
navicat ドライバーは現在、新しい暗号化ルールをサポートしていません。問題を解決するには 2 つの方法があります。1 つは navicat ドライバーをアップグレードすること、もう 1 つは mysql ユーザー ログイン パスワード暗号化ルールを mysql_native_password に復元することです。ここでは、mysql を変更しますルールを以前の mysql_native_password に戻します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'あなたのパスワード' PASSWORD EXPIRE NEVER; # 暗号化ルールを変更する< a i= 1> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; # ユーザーのパスワードを更新します フラッシュ権限; #権限の更新
バージョン 8.0 以降のパスワードを変更するには、次を使用します。
ALTER ユーザー 'root'@'localhost' IDENTIFIED BY 'パスワード';
のように:
mysql> ALTER ユーザー 'root'@'localhost' '123456'; によって識別されました mysql>フラッシュ特権;
前の方法を使用すると、次のエラーが報告されます。
エラー 1820 (HY000): このステートメントを実行する前に、ALTER USER ステートメントを使用してパスワードをリセットする必要があります。
セミコロンが必要であることに注意してください。
8.0 より上の一部のバージョンでは、mysqld --skip-grant-tables コマンドを使用して付与テーブル認証をスキップすると、エラーが表示されずに失敗する場合があります。
現時点では、以下を使用できます。
mysqld --console --skip-grant-tables --shared-memory
MySQL管理
MySQLサーバーの起動とシャットダウン
Windows システムの場合
Windows システムでは、コマンド ウィンドウ (cmd) を開き、MySQL インストール ディレクトリの bin ディレクトリに入ります。
起動する:
cd c:/mysql/bin mysqld --コンソール
閉鎖:
cd c:/mysql/bin mysqladmin -uroot シャットダウン
Linux システムの場合
まず、次のコマンドを実行して、MySQL サーバーが起動しているかどうかを確認する必要があります。
ps -ef | grep mysqld
MySql が起動している場合は、上記のコマンドで mysql プロセスのリストが出力されますが、mysql が起動していない場合は、次のコマンドを使用して mysql サーバーを起動できます。
root@host# cd /usr/bin ./mysqld_safe &
現在実行中の MySQL サーバーをシャットダウンする場合は、次のコマンドを実行できます。
root@host# cd /usr/bin ./mysqladmin -u root -p シャットダウン パスワードを入力してください: ******
MySQLのユーザー設定
MySQL ユーザーを追加する必要がある場合は、mysql データベースのユーザー テーブルに新しいユーザーを追加するだけです。
以下はユーザーを追加する例です。ユーザー名は guest、パスワードは guest123 で、ユーザーには SELECT、INSERT、および UPDATE 操作を実行する権限が与えられています。
root@host# mysql -u root -p パスワードを入力してください:******* mysql> mysql を使用する; データベースが変更されました mysql>ユーザーに挿入 (ホスト、ユーザー、パスワード、 select_priv、insert_priv、update_priv) VALUES ('localhost'、'guest'、 パスワード('guest123'), 'Y', 'Y', 'Y'); クエリは OK、1 行が影響を受けました (0.20 秒) mysql>フラッシュ権限; クエリは OK、1 行が影響を受けました (0.01 秒) mysql> SELECT ホスト、ユーザー、パスワード FROM user WHERE user = 'guest'; +-----------+-----------+----------------------+ |ホスト |ユーザー |パスワード | +-----------+-----------+---------------------+ |ローカルホスト |ゲスト | 6f8c114b58f2ce9e | +-----------+-----------+----------------------+ セット内の 1 行 (0.00 秒)
ユーザーを追加するときは、MySQL が提供する PASSWORD() 関数を使用してパスワードを暗号化してください。上の例では、暗号化後のユーザー パスワードが 6f8c114b58f2ce9e であることがわかります。
注:MySQL5.7 では、ユーザー テーブルのパスワードは authentication_string に置き換えられました。 。
注:password() 暗号化関数は 8.0.11 で削除され、MD5() 関数で置き換えることができます。
注: FLUSH PRIVILEGES ステートメントを実行する必要があることに注意してください。このコマンドを実行すると、認可テーブルが再ロードされます。
このコマンドを使用しない場合、mysql サーバーを再起動しない限り、新しく作成したユーザーを使用して mysql サーバーに接続することはできません。
ユーザーの作成時にユーザーの権限を指定できます。挿入ステートメントの対応する権限列で、これを「Y」に設定します。ユーザー権限のリストは次のとおりです:
- Select_priv
- Insert_priv
- Update_priv
- 削除_priv
- Create_priv
- Drop_priv
- Reload_priv
- シャットダウン_特権
- プロセス特権
- File_priv
- Grant_priv
- 参考資料_priv
- Index_priv
- Alter_priv
ユーザーを追加するもう 1 つの方法は、SQL GRANT コマンドを使用することです。次のコマンドは、ユーザー zara をパスワード zara123 で指定されたデータベース TUTORIALS に追加します。
root@host# mysql -u root -p パスワードを入力してください:******* mysql> mysql を使用する; データベースが変更されました mysql> GRANT SELECT、INSERT、UPDATE、DELETE、CREATE、DROP ->チュートリアルについて。* -> 「zara」@'localhost' へ -> 「zara123」によって識別されました;
上記のコマンドは、mysql データベースの user テーブルにユーザー情報レコードを作成します。
注: MySQL の SQL ステートメントはセミコロン (;) で終わります。
/etc/my.cnf ファイル構成
通常、この構成ファイルを変更する必要はありません。このファイルのデフォルト構成は次のとおりです。
[mysqld] datadir=/var/lib/mysql ソケット=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
構成ファイルでは、さまざまなエラー ログ ファイルが保存されるディレクトリを指定できますが、通常、これらの構成を変更する必要はありません。
MySQL を管理するためのコマンド
以下に、Mysql データベースを使用するときに一般的に使用されるコマンドをリストします。
-
USE データベース名 :
操作する Mysql データベースと、使用後のすべての Mysql コマンドを選択しますこのコマンドはすべてこのデータベースのみに使用されます。mysql> RUNOOB を使用します。 データベースが変更されました
-
SHOW DATABASES:
MySQL データベース管理システムのデータベース リストを表示します。mysql>データベースを表示; +----------------------+ |データベース | +----------------------+ |情報スキーマ | |ルヌーブ | | cdcol | | mysql | |ワンシンク | |パフォーマンス スキーマ | | phpmyadmin | |テスト | | wecenter | |ワードプレス | +----------------------+ 10 行セット (0.02 秒)
-
SHOW TABLES:
指定したデータベースのすべてのテーブルを表示します。このコマンドを使用する前に、use コマンドを使用して操作するデータベースを選択する必要があります。mysql> RUNOOB を使用します。 データベースが変更されました mysql>テーブルを表示; +-----------------+ | Tables_in_runoob | +-----------------+ |従業員_tbl | | runoob_tbl | | tcount_tbl | +-----------------+ 3 行セット (0.00 秒)
-
SHOW COLUMNS FROM データ テーブル:
の属性、属性タイプ、主キー情報を表示します。データテーブル、NULLかどうか、デフォルト値、その他の情報。mysql> runoob_tbl の列を表示; +---------------+--------------+------+-----+--- ------+------+ |フィールド |タイプ |ヌル |キー |デフォルト |追加 | +---------------+--------------+------+-----+--- ------+------+ |ランノブID | int(11) |いいえ |プリ | NULL | | |ルノオブタイトル | varchar(255) |はい | | NULL | | |ルノオブ作者 | varchar(255) |はい | | NULL | | |提出日 |日付 |はい | | NULL | | +---------------+--------------+------+-----+--- ------+------+ 4 行セット (0.01 秒)
-
SHOW INDEX FROM データ テーブル:
PRIMARY KEY を含む、データ テーブルの詳細なインデックス情報を表示します。 (主キー)。mysql> runoob_tbl からインデックスを表示; +-----------+-----------+----------+------------ --+---------------+----------+---------------+---------- ---+--------+------+---------------+---------+---------- --------+ |表 |非固有 |キー名 |シーケンスインインデックス |列名 |照合 |カーディナリティ |サブパート |パックされた |ヌル |インデックスの種類 |コメント | Index_comment | +-----------+-----------+----------+------------ --+---------------+----------+---------------+---------- ---+--------+------+---------------+---------+---------- --------+ |るのーぶ0 |プライマリ | 1 |ランノブID |あ | 2 | NULL | NULL | | Bツリー | | | +-----------+-----------+----------+------------ --+---------------+----------+---------------+---------- ---+--------+------+---------------+---------+---------- --------+ セット内の 1 行 (0.00 秒)
-
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] \G:
このコマンドは、Mysql データベース管理システムのパフォーマンスと統計情報を出力します。 。mysql> SHOW TABLE STATUS FROM RUNOOB; # データベース RUNOOB 内のすべてのテーブルに関する情報を表示します mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'; # runoob で始まる名前のテーブルに関する情報 mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G; # クエリ結果を列に出力するには \G を追加します
GIF 図のデモンストレーション: