MySQL チュートリアル 1.2

前回のチュートリアルのネチズンのメモを編集したもの

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
  • 削除_p​​riv
  • 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 図のデモンストレーション:

おすすめ

転載: blog.csdn.net/SHADOW_xhx/article/details/134489503