目次
8.1、mysqldumpコマンドを使用してバックアップします
8.3、mysqlhotcopyツールを使用してすばやくバックアップする
1つは、mysqlサービスの開始、停止、再起動です。
開始:net start mysql
stop:net stop mysql
restart:Windowsは直接再起動(再起動)できません。停止してから開始することしかできません。
2.ルートパスワードを初期化します
mysqlデータベースを入力します:mysql -u root -p
初期パスワードを取得します:mysqld --initialize --user = mysql --console
次のコマンドを実行して、デフォルトのパスワードを変更します。「123456」は自分のパスワードに変更できます。
mysql> 「123456」で識別されるユーザーuser()を変更します。
3、rootリモートアクセスを許可する
たとえば、rootが123456を使用して、任意のホストからmysqlサーバーに接続するようにします。
mysql> GRANTオプションで「123456」によって識別される「root」@「%」に*。*のすべての特権を付与します;
mysql>フラッシュ特権;
ユーザーlinuxidcがIPが192.168.119.10のホストからmysqlサーバーに接続できるようにし、パスワードとして654321を使用する場合
mysql> GRANT ALL PRIVILEGES ON *。* TO'linuxidc '@' 192.168.119.10 'IDENTIFIED BY '654321' WITH GRANT OPTION;
mysql>フラッシュ特権;
第四に、myseqlを操作してcmdにデータを挿入します
4.1、データベースを作成する
mysql>データベースアカウントの作成;
4.2、テーブルを作成する
mysql> create table accout_tb1
->(
-> id INT NOT NULL、
-> name CHAR(100)NULL、
-> balance INT NOT NULL-
>);
4.3、データを挿入
mysql> accout_ta1(id、name、balance)の値(1、 'lilei'、450);に挿入します。
4.4、表示テーブル
mysql> select * from accout_tb1;
5、mysqlのものの分離設定
5.1、トランザクション分離レベルを設定します
*读未提交(読み取り-コミットされていない)
mysql> セッショントランザクション分離レベルの読み取りがコミットされていないことを設定します。
*不可重复读(読み取りコミット)
mysql> セッショントランザクション分離レベルの読み取りコミットを設定します。
*可重复读(繰り返し可能-読み取り)
mysql> セッショントランザクション分離レベルの繰り返し可能読み取りを設定します。
*串行化(シリアル化可能)
mysql> セッショントランザクション分離レベルをシリアル化可能に設定します。
5.2、分離レベルをリセット
mysql>トランザクションの開始;
5.3、トランザクションをコミットします
mysql> commit;
6、mysqlのもののストアドプロシージャ
- 区別するために使用される宣言ステートメントターミネーター
区切り文字//
- ストアドプロシージャを宣言します
CREATE PROCEDURE demo_in_parameter(IN p_in int)
- ストアドプロシージャの開始記号と終了記号
BEGIN .... END
- 変数の割り当て
SET @ p_in = 1
例:
* IN入力パラメーター:
ストアード・プロシージャーを呼び出すときにパラメーターの値を指定する必要があることを示します。ストアード・プロシージャー内のパラメーターの値を変更しても戻せません。これはデフォルト値です。
作成:
DELIMITER //
CREATE PROCEDURE demo_in_parameter(IN p_in int)
BEGIN
SELECT p_in;
SET p_in = 2;
SELECT p_in;
END //
DELIMITER;
実行:
mysql> SET @ p_in = 1;
mysql> CALL demo_in_parameter(@p_in);
* OUT出力パラメーター:
値はストアドプロシージャ内で変更し、次の
作成に戻ります。DELIMITER
//
CREATE PROCEDURE demo_out_parameter(OUT p_out int)
BEGIN
SELECT p_out;
SET p_out =
SELECT p_out;
END //
DELIMITER;
実行:
mysql> SET @ p_inout = 1;
mysql> CALL demo_inout_parameter(@p_inout);
* INOUT入力および出力パラメーター:
呼び出し時に指定され、変更して返すことができ
ます作成:
DELIMITER //
CREATE PROCEDURE demo_inout_parameter(INOUT p_inout int)
BEGIN
SELECT p_inout;
SET p_inout = 2;
SELECT p_inout;
END //
DELIMITER;
実行:
mysql> SET @ p_inout = 1;
mysql> CALL demo_inout_parameter(@p_inout);
セブン、mysqlビュー
(1)ビューの作成
CREATE VIEW <ビュー名> AS <SELECTステートメント>
<ビュー名>:ビューの名前を指定します。名前はデータベース内で一意である必要があり、他のテーブルまたはビューと同じ名前にすることはできません。
<SELECTステートメント>:複数のベーステーブルまたはソースビューのクエリに使用できるビューを作成するためのSELECTステートメントを指定します
SELECTステートメントの指定には、次の制限があります
。CREATEVIEW特権に加えて、ユーザーには、操作に関連する基礎となるテーブルおよびその他のビューの関連特権もあります。
SELECTステートメントは、システム変数またはユーザー変数を参照できません。
SELECTステートメントでFROM句にサブクエリを含めることはできません。
SELECTステートメントは、プリペアドステートメントのパラメーターを参照できません。
ビュー定義で参照されているテーブルまたはビューが存在している必要があります。ただし、ビューが作成された後、定義によって参照されているテーブルまたはビューを削除できます。CHECK TABLEステートメントを使用して、このような問題がないかビュー定義を確認できます。
例子:
mysql> create view view_accout_tb1-
> as select * from accout_tb1;
mysql> select * from view_accout_tb1;
デフォルトでは、作成されたビューとベーステーブルのフィールドは同じです。ビューフィールドの名前を指定してビューを作成することもできます。
mysql> create view view_accout_tb2-
> as select id、name from accout_tb1;
(2)DESCRIBEビューのビュー名を照会し
ます。
ビューは、主に次の領域でのクエリに使用されます。
*ビューを使用して、取得したデータを再フォーマットします。
*ビューを使用して、複雑なテーブル結合を単純化します。
*ビューを使用してデータをフィルタリングします。
mysql> description view_accout_tb2;
8、mysqlのバックアップと復元
8.1、mysqldumpコマンドを使用してバックアップします
mysqldumpコマンドは、データベース内のデータをテキストファイルにバックアップします。テーブルの構造とテーブル内のデータは、生成されたテキストファイルに保存されます。
mysqldumpコマンドの動作原理は非常に単純です。まず、バックアップするテーブルの構造を見つけてから、テキストファイルにCREATEステートメントを生成します。
次に、テーブル内のすべてのレコードをINSERTステートメントに変換します。次に、これらのステートメントを使用して、テーブルを作成し、データを挿入できます。
(1)データベースをバックアップします
mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql
* dbnameパラメーターはデータベースの名前を示します。
* table1およびtable2パラメーターはバックアップが必要なテーブルの名前を示します。空の場合はデータベース全体がバックアップされます。
* BackupName.sqlパラメーターテーブルは次の名前を設計します。バックアップファイルの場合、ファイル名の前に絶対パスを付けることができます。データベースは通常、接尾辞sqlが付いたファイルに分割されます。
例子:
F:\ myseql \ mysql-8.0.19-winx64 \ bin> mysqldump -u root -p accout accout_tb1> backup.sql
(2)複数のデータベースをバックアップします
F:\ myseql \ mysql-8.0.19-winx64 \ bin> mysqldump -u username -p --databases dbname2 dbname2> Backup.sql
(3)すべてのデータベースをバックアップします
mysqldump -u username -p -all-databases> BackupName.sql
例子:
F:\ myseql \ mysql-8.0.19-winx64 \ bin> mysqldump -u -root -p -all-databases> D:\ all.sql
8.2、データベースディレクトリ全体を直接コピーする
MySQLには、MySQLのデータベースファイルを直接コピーするという非常に単純なバックアップ方法があります。これは最も簡単で最速の方法です。
ただし、その前に、最初にサーバーを停止して、レプリケーション期間中にデータベース内のデータが変更されないようにする必要があります。データベース
をコピーする過程でデータが書き込まれると、データの不整合が発生します。この状況は開発環境では問題ありませんが、実稼働環境でバックアップサーバーを許可することは困難です。
注:この方法はInnoDBストレージエンジンテーブルには適用されませんが、MyISAMストレージエンジンテーブルには非常に便利です。同時に、MySQLのバージョンは復元時に同じである必要があります。
8.3、mysqlhotcopyツールを使用してすばやくバックアップする
名前を見るだけで、ホットバックアップであることがわかります。したがって、mysqlhotcopyはMySQLサーバーを停止せずにバックアップをサポートします。さらに、mysqlhotcopyのバックアップ方法はmysqldumpよりも高速です。mysqlhotcopyはperlスクリプトであり、主にLinuxシステムで使用されます。高速バックアップのために、LOCK TABLES、FLUSH TABLES、およびcpを使用します。
原則:最初にバックアップが必要なデータベースに読み取りロックを追加し、次にFLUSH TABLESを使用してメモリ内のデータをハードディスク上のデータベースに書き戻し、最後に
バックアップが必要なデータベースファイルをコピーします。ターゲットディレクトリに移動します。
コマンドの形式は次のとおりです
。mysqlhotcopy[option] dbname1 dbname2 backupDir /
* dbname:データベース名;
* backupDir:バックアップ先のフォルダー;
一般的なオプション:
-help:mysqlhotcopyヘルプを表示します;
--allowold:同じバックアップファイルがバックアップディレクトリに存在する場合は、古いバックアップファイルに_oldを追加します;
--keepold:同じバックアップファイルがバックアップディレクトリに存在する場合、いいえ古いバックアップファイルを削除しますが、古いファイルの名前を変更します;
--flushlog:この生成後、データベースへの更新はログに記録されます;
--noindices:インデックスファイルではなく、データファイルのみがバックアップされます;
- -user = Username:ユーザー名を指定するために使用されます。代わりに-uを使用できます
。--password = Password:パスワードを指定するために使用されます。代わりに-pを使用できます。-pを使用する場合、パスワードと-pの間にスペースはありません。-
port=ポート番号:アクセスポートを指定するために使用されます。代わりに-Pを使用できます。
-socket= socket file:ソケットファイルを指定するために使用されます。 、代わりに-Sを使用できます。
mysqlhotcopyはmysqlに付属していません。Perlデータベースインターフェイスパッケージをインストールする必要があります。ダウンロードアドレスは次のとおりです。http://dev.mysql.com/downloads/dbi.html現在、このツールはMyISAMテーブルのみをバックアップできます。
8.4、復元
(1)mysqldumpコマンドを使用してバックアップを復元します
データベースの構文は次のとおりです
。mysql-uroot-p [dbname] <backup.sq
例:
mysql -u root -p <C:\ backup.sql
(2)ダイレクトコピーディレクトリのバックアップを
復元するこの方法で復元する場合は、2つのMySQLデータベースのバージョン番号が同じであることを確認する必要があります。MyISAMタイプのテーブルは有効であり、InnoDBタイプのテーブルは使用
できません。InnoDBテーブルのテーブルスペースを直接コピーすることはできません。