検索
ホームページバックエンド開発PHPチュートリアルPHP と MySQL の学習ノート 9: Web データベースの作成

1. MySQL サービスをサーバーにデプロイする際の基本的な手順と注意点

1) MySQL のインストール (コマンドのインストール、インストールパッケージのインストールなど)

2) MySQL プログラムを実行するために、独立したオペレーティング システムのユーザー権限が 1 つ必要かどうかを検討してください。

3) パス設定

4) root パスワード (付録 A: root パスワードがないとシステムは安全ではありません)

5) 匿名ユーザーを削除し、使用するデータベースのみをテストします

6) MySQL サーバーを起動し、自動的に実行されるように設定します。


2. MySQL コマンドラインまたは他のターミナルの使用に関する注意事項

1) MySQL コンソールのコマンドラインで、各コマンドの間はセミコロンで区切ります。 (;)。セミコロンは MySQL にこのコマンドを実行するように指示します。セミコロンが欠落している場合、MySQL はコマンドを実行しません。

セミコロンを省略すると、コマンドの途中に新しい行が追加される可能性があります。 MySQL では、-> に似た矢印である永続化シンボル (

mysql> grant select

        ->

mysql> Grant select

->

この記号は、Enter キーを押すたびにこれらのプロンプトが表示され、入力するまで終了しません。セミコロン。

PS: この問題は初心者にとって見落としがちですが、私も最初に始めたときはとてもかわいく感じました。


2) SQL ステートメントでは大文字と小文字が区別されませんが、データベース名とテーブル名では大文字と小文字が区別されます。

3. MySQL にログインします

マシンのコマンドラインで、mysql プログラムを呼び出します

mysql -h hostname -u username -p

1) ローカルで実行します。無視できます。 -h ホスト名

2) -u はデータベースのユーザー名に接続するためにのみ使用されます。指定しない場合、デフォルトはそのままです。オペレーティング システムへのログインに使用されるユーザー名。


3) -p コマンド オプションは、サーバーへの接続にパスワードを使用するように指示するために使用されます。ログインに使用されるユーザー名にパスワードがない場合は、このオプションを無視できます。さらに、このコマンドラインにパスワードを含める必要はありません。MySQL サーバーがパスワードを要求します。実際、そうしない方が良いのです。コマンド ラインにパスワードを入力すると、パスワードは通常のテキスト (クリア テキスト) として画面に表示されます。

4. 基本コマンド


データベース dbname ; データベースの作成

mysql -D dbname -h hostname -u username -p also


データベースを直接指定できます。ログイン後に現在のデータベースを簡単に選択または切り替えることができます。

データベースのリストを表示します (現在のログイン アカウントの権限内のデータベースのみが表示されます)

データベース テーブルを表示します。 >

description tablename ; 特定のテーブルの詳細を表示すると、データベースの作成時に提供された情報が表示されます。

5. 権限

注: Web データベースを確立したい場合は、Web サイト アプリケーションごとに個別のユーザーを作成するのが最善です。権限。

「最小特権の原則」を再度強調します。ユーザー (またはプロセス) は、割り当てられたタスクを実行できる最低レベルの権限を持っている必要があります。

6. MySQL 権限システム

1) GRANT コマンドと REVOKE コマンドは、それぞれ MySQL ユーザー権限の付与と取り消しに使用されます。これらの権限は 4 つに分かれています。レベル:

グローバル;

テーブル;

列。

GRANT コマンドは、コマンドを作成し、対応する権限を付与するためによく使用されます。一般的な形式は次のとおりです:

GRANT  privileges  [columns]

ON  item

TO user_name  [IDENTIFIED BY 'password']

[REQUIRE  ssl_options ]

[WITH [GRANT OPTION | limit_options] ]

GRANT 権限[列] ON 項目 TO user_name [IDENTIFIED BY 'password'] [REQUIRE ssl_options] [WITH [GRANT OPTION | limit_options] ]


角括弧 [] 内の句はオプションであり、上記の例には多くのプレースホルダーがあります。いくつかの説明:

>最初のプレースホルダー権限は、カンマで区切られた一連の権限である必要があります。

> 列はオプションであり、各列の権限を指定するために使用されます (単一の列の名前、またはカンマで区切られた一連の列名を使用します)。

>プレースホルダー項目は、新しい権限が適用されるデータベースまたはテーブルです。 *.* が指定されている場合、権限はすべてのデータベースに適用されます。これをグローバル権限の付与といいます。 特定のデータベースを使用しない場合は、* を指定してグローバル権限を付与することもできます。データベース内のすべてのテーブルを dbname.* の形式で指定し、単一のテーブルを dbname.tablename の形式で指定するのが一般的です。

>user_name はデータベース内のユーザーであり、ホスト名を含めることで異なるドメインのユーザーを区別するために使用できます。 ss @localhost や ss@somewhere.com など、この機能を使用してユーザーがローカル マシンに接続する場所を指定したり、特定の場所でアクセスできるテーブルやデータベースを指定したりすることもできます。セキュリティを向上させます。

>REQUIRE 句を使用すると、ユーザーが暗号化されたソケットまたは他の SSL オプションを介して接続する必要があるかどうかを指定できます。

>WITH GRANT OPTION オプションを指定すると、指定されたユーザーが自分が所有するアクセス許可を他のユーザーに付与できることを意味します。

WITH 句を指定すると、ユーザーごとの 1 時間あたりのクエリ、更新、および接続の数を指定することもできます。 (これらの句は、共有システム上の個々のユーザーに負荷を制限する場合に役立ちます)

例: MAX_QUERIES_PER_HOUR n ; MAX_UPDATES_PER_HOUR n ; MAX_CONNECTIONS_PER_HOUR n ;


2 ) 権限は、mysql という名前の 5 つのシステム テーブル (mysql.user、mysql.db、mysql.host、mysql.tables_priv、および mysql.columns_priv) に保存されます。 (これらのテーブルを直接変更すると、相互に置き換えて GRANT コマンドを使用するのと同じ効果があります)

3) 権限のタイプとカテゴリ

には、基本的に 3 つのタイプがあります。 MySQL の権限。一般ユーザーに付与される権限、管理者に付与される権限、およびいくつかの特定の権限に適しています。


表 9-1 の権限に加えて、現在使用されていない 2 つの権限、REFERENCES 権限と EXECUTE 権限があります。

ほとんどの場合、追加、削除、変更、クエリの一般的な基本機能のみが必要です。

挿入 (SELECT)、削除 (DELETE)、更新 (UPDATE)、選択 ( SELECT)

例:

'book123456' で識別される bookitor に、books.* の選択、挿入、削除、更新を許可します。 🎜>


GRANT に対応するコマンドは REVOKE で、その使用法は同様です:


REVOKE


REVOKE 権限 [(columns )]

ON 項目

FROM user_name

REVOKE  privileges  [(columns)]

ON   item

FROM  user_name  

WITH GRANT OPTION が指定されている場合は、次のように取り消すことができます。

REVOKE ALL PRIVILEGES, GRANT

FROM user_name


例:



注: MySQL に付属の監視プログラムを終了するには、quit コマンドを入力するのが最善です。作成するだけです。Web ユーザーとしてログインし、すべてが適切に動作していることをテストします。 GRANT ステートメントが実行されている場合 (権限はフラッシュされる必要があります)、ログインしようとすると拒否されます。これは、通常、インストール プロセス中に匿名アカウントが削除されなかったことが原因です。


7. データベース テーブルの作成

CREATE TABLE tablename ( columns)

注: MySQL は複数のテーブル タイプとストレージ エンジンを提供します。トランザクションセーフなタイプがいくつか含まれています。

説明例:



注 1: 各 MySQL テーブルは主キーを 1 つだけ持つことができますが、この主キーは 1 つのフィールドまたは複数のフィールドで構成できます。通常、テキストなどの型は主キーとして設定できず、インデックスも作成できません (この機能は選択したデータ エンジンに関連しています)

注 2: char(50)、このデータ型は名前に 50 を割り当てます。通常、名前はそれほど長くありませんが、MySQL は空の部分をスペースで埋めます。または、必要に応じてストレージ スペース (プラス 1 バイト) を割り当てることができ、占有スペースが少ない varchar タイプを使用することもできます。データの方が速いです。

注 3: NULL ではありません。これは、さらなる説明が必要な小さな最適化措置です。インターネットからの説明は次のとおりです。

为什么mysql字段要设置为not null?
现在 大师来跟大家解释解释

首先 我们创建一个表 asd字段为null,qwe字段为not null,都无默认值

CREATETABLE`tb` ( `id`INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `asd`VARCHAR(45) NULL, `qwe`VARCHAR(45) NOT NULL, PRIMARYKEY (`idtb`))

然后

insert tb(asd) values('123123123'); insert tb(qwe) values('123123123');

现在 我们来查看这个表



可以看出
not null 的qwe字段 未设置的时候是个空字符串
null 的asd字段 未设置的时候是个NULL

以上结果 大家应该都可以想像到的。
那么为什么要设置NOT NULL呢
因为 MYSQL不是PHP,NULL不等于空字符串
比如我们查询qwe为空的

select * from tb where qwe=''

可以找到



但是

select * from tb where asd=''

则什么都找不到

なぜ mysql フィールドを null 以外に設定する必要があるのですか? ここでマスターが説明します まず、asd フィールドを null としてテーブルを作成し、 qwe フィールドは null ではなく、デフォルト値はありません 次に 次に、このテーブルを見てみましょう ではないことがわかります。 null の qwe フィールドが設定されていない場合、空の文字列です。 null の asd フィールドが設定されていない場合、NULL です。 誰もが想像できるはずです。上記の結果。 では、なぜ NOT NULL を設定するのでしょうか? MYSQL は PHP ではないため、NULL は空の文字列と等しくありません たとえば、空の をクエリすると、次のことがわかります。 しかし は何も見つかりません

8. インデックスを作成する基本的な方法

データベースのパフォーマンスの問題は通常、データベースにインデックスが作成されていない場合に発生します (主キーやインデックスのないテーブルを作成することも可能です)

CREATE INDEX ステートメントの一般的な形式は次のとおりです:

CREATE [UNIQUE | FULLTEXT] INDEX インデックス名

ON テーブル名 (インデックス列名 [ (長さ) ] [ASC | DESC], .. . )

注: FULLTEXT インデックスは、テキスト フィールドのインデックス付けに使用されます。オプションの長さフィールドを使用すると、フィールドの最初の長さの文字にインデックスを付けることを指定できます。また、インデックスを昇順で指定することもできます。または降順。


9. MySQL の識別子を理解する

MySQL では、

データベース、テーブル、カラム、インデックスの 5 種類の識別子が提供されています。および Alias

注 1: MySQL のデータベースは特定のファイル構造を持つディレクトリにマッピングされ、テーブルはファイルにマッピングされます。これは、それらに与えられる名前に直接影響します。また、オペレーティング システムがディレクトリとファイルの間で大文字と小文字を区別する場合、それらの名前の大文字と小文字にも影響を与える可能性があります。

(データを含むディレクトリとファイルの場所は、構成で設定する必要があります。mysqladmin コマンドを使用して、システム内のそれらの場所を表示できます。Windows の bin ディレクトリには、プログラム mysqladmin.exe があります)

注 2: ASCII(0) (null)、ASCII(255) (BLANK FF) または引用符文字 (これら 3 文字) は MySQL 識別子では使用できません



10. カラムのデータ型

MySQL には、数値、日付と時刻、文字列の 3 つの基本的なカラム データ型があります。各タイプには多くのサブカテゴリが含まれており、これら 3 つのタイプには異なる記憶領域があります。一般に、列のデータ型を選択するときは、データを満たすことができる最小のタイプを選択するのが基本原則です。

注: 多くのデータ型では、この型の列を作成するときに最大表示長を指定できます。これは、次の表の M で表されます。M の最大値は 255 です。

1) 数値型

数値型は整数と浮動小数点数に分かれます

注 1: 整数データも指定可能です。符号なしタイプとして。

注 2: すべての数値型に対して ZEROFILL 属性を指定でき、残りの部分は先頭の 0 で埋められます。フィールドを ZEROFILL として指定すると、そのフィールドは自動的に UNSIGNED 数値型になります。




2) 日付と時刻のタイプ

MySQL を使用した日付と時刻時刻タイプ。データは文字列または数値形式で入力できます。手動で設定しない場合、特定の行の TIMESTAMP 列は、行が最後に変更された時刻に設定されます。これは、トランザクション レコードにとって意味があります。



3) 文字列型

カテゴリ 1: 通常の文字列、つまり、CHAR (を含む短い短いテキスト)固定長)、VARCHAR(可変長)型。

注: データ サイズがどんなに大きくても、CHAR 型のカラムは余分な空白をスペースで埋めます。CHAR 型のデータを取得し、VARCHAR 型のデータを格納する場合、MySQL は余分な空白をフィルタリングします。

カテゴリ 2: TEXT と BLOB

は、それぞれ長いテキストまたはバイナリ データに適しています。 BLOB(バイナリ ラージ オブジェクト)とはバイナリ データの略で、画像や音声データなどあらゆるデータをサポートします。

カテゴリ 3: SET および ENUM

SET タイプは、列の値が特定のセット内の指定された値から取得される必要があり、複数の値を含めることができることを指定するために使用されます。セットから。コレクションの最大サイズは 64 要素です。

ENUM は SET と似た列挙型ですが、このタイプの列はリストされた値の 1 つまたは NULL のみを保持できる点が異なります。列挙型の要素の最大数は 65535 です。



この章の終わり:

なぜそんなに注意深く勉強するのかと聞かれたら、それは、ただ勉強したいからです。それをするためにそれについて明確にしてください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。