1。 [** MySQL ](https://cloud.tencent.com/product/cdb?from=10680) 3つのインストール方法:**
1 )インターネットからインストールする
sudo apt-get install mysql-server
注:/etc/apt/source.listのcnをusに変更することをお勧めします。米国のサーバーは中国のサーバーよりもはるかに高速です。変更コマンドは次のとおりです。sudosed-i "s / cn / us / g" sources.list
2 )オフラインパッケージをインストールする
例として[mysql-5.5.16-linux2.6-x86_64.tar.gz](http://dev.mysql.com/downloads/mysql/)、mysql [公式ウェブサイト](http://dev.mysql.com/downloads/)を取り上げます。
3 )バイナリパッケージのインストール
インストールが完了すると、環境変数が自動的に構成されます。mysqlコマンドを直接使用できます。
オンラインインストール(1)とバイナリパッケージインストール(3)は比較的簡単で、オフラインパッケージ(2)のインストールに重点を置いています。
groupadd mysql
mkdir /home/mysql
useradd -g mysql -d /home/mysql mysql
mysql-5.0.45-linux-i686-icc-glibc23.tar.gzを/ usr / localディレクトリにコピーします
解凍:tar zxvf mysql-5.5.16-linux2.6-x86_64.tar.gz
ln -s mysql-5.0.45-linux-i686-icc-glibc23 mysql
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
scripts / mysql_install_db --user = mysql(mysqlディレクトリで実行する必要があります。出力テキストに注意してください。ルートパスワードを変更してmysqlを起動するコマンドがあります)
rootのパスワードを設定します:./ bin / mysqladmin -u root password'passw0rd '
2. msyqlを構成および管理します:
my.cnfについて:mysqlは、my.cnf:/ etc、mysqlインストールディレクトリ、およびインストールディレクトリ内のデータを次の順序で検索します。 / etcの下にはグローバル設定があります。
注:オンラインインストールまたはバイナリインストールの場合、次のコマンドを直接使用してmysqlを開始および停止できます:/etc/init.d/mysql start | stop | restart
mysqlを停止します:mysqladmin -uroot -ppassw0rd shutdown(u、pの後にスペースがないことに注意してください)
mysqlを自動的に開始するように設定します。startupコマンドを/etc/rc.localファイルに追加します
5. ルートリモートログインを許可する:
1)このマシンでmysqlにログインします。mysql-uroot -p(-pが必要です);データベースを変更します:use mysql;
2)すべてのホストから:*。*のすべての特権を、許可オプションを使用して「password」で識別されるroot @ "%"に付与します。
3)指定されたホストから:*。*のすべての特権を、許可オプションを使用して「password」で識別されるroot @ "192.168.11.205"に付与します。
4)mysqlライブラリに入り、ホストが%であるデータが追加されているかどうかを確認します。mysqlを使用します。select* from user;
読み取り専用ダンプデータベース:mysqldump -h 172.192.1.12 -uroot -p123456 --single-transaction your_db> your_db_bk.sql
MySQLポートを介してリモートでmysqlに接続します。mysql-h122.128.10.114-P 31206 -uroot -pyg123456 // -Pmysqlポートは/etc/mysql/my.cnf構成ファイルで構成されます。-ppassword
6. データベースを作成し、ユーザーを作成します:
1)データベースを構築します。データベースtest1を作成します。
2)ユーザーを作成し、権限を付与します。test1。*のすべての権限を、付与オプションを使用して「password」で識別されるuser_test @ "%"に付与します。
3)データベースを削除します。dropdatabasetest1;
7. 削除権限:
1) revoke all privileges on test1.* from test1@"%";
2) use mysql;
3) delete from user where user="root" and host="%";
4) flush privileges;
すべてのデータベースを表示:データベースを表示;データベース内のすべてのテーブルを表示:テーブルを表示;
mysqlへのリモートログイン:mysql -h ip -u user -p
10. 文字セットを設定します(例としてutf8を取り上げます)。
1)現在のエンコーディングを表示します。「character%」などの変数を表示します。
2)my.cnfを変更し、[client]の下にdefault-character-set = utf8を追加します。
3)[サーバー]の下にdefault-character-set = utf8、init_connect = 'SET NAMESutf8;'を追加します。
4)mysqlを再起動します。
注:クライアント設定を有効にするには、/ etcの下のmy.cnfのみを変更してください。インストールディレクトリの下の設定では、サーバー設定のみを有効にすることができます。バイナリインストール用に/etc/mysql/my.cnfを変更します
**11. 古いデータをutf8 **にアップグレードします(例として、古いデータはlatin1です)。
1)古いデータをエクスポートします:mysqldump --default-character-set = latin1 -hlocalhost -uroot -B dbname --tables old_table> old.sql
2)変換エンコーディング(LinuxおよびUNIX):iconv -t utf-8 -f gb2312 -c old.sql> new.sqlここでは、元のテーブルのデータがgb2312であると想定しています。-fを削除して、iconvに元の文字を自動的に判別させることもできます。セットする。
3)インポート:new.sqlを変更し、挿入または変更ステートメントの前に「SET NAMES utf8;」という文を追加し、すべてのgb2312をutf8に変更して保存します。
mysql -hlocalhost -uroot -p dbname < new.sql
max_allowed_packetのエラーが報告された場合は、ファイルが大きすぎることが原因です。mysqlのデフォルトパラメータは1Mです。my.cnfで値を変更できます(mysqlを再起動する必要があります)。
12. utf8をサポートするクライアント:
Mysql-Front、Navicat、PhpMyAdmin、Linux Shell(接続後、SET NAMES utf8を実行します。その後、utf8データを読み書きできます。10.4が設定された後は、この文を実行する必要はありません)
13. バックアップと復元
単一のデータベースをバックアップします:mysqldump -u root -p -B dbname> dbname.sql
すべてのデータベースをバックアップします:mysqldump -u root -p --all-databases> all.sql
バックアップテーブル:mysqldump -u root -p -B dbname --table tablename> tablename.sql
データベースを復元します。mysql-uroot-p name <name.sql
リカバリテーブル:mysql -u root -p dbname <name.sql(データベースを指定する必要がありますが、テーブルは指定されたデータベースに配置する必要があるため、テーブルを指定できない場合があります、haha)
14. コピー
Mysqlは、一方向の非同期レプリケーションをサポートします。つまり、1つのサーバーがマスターサーバーとして機能し、1つ以上の他のサーバーがスレーブサーバーとして機能します。レプリケーションは、マスターサーバーが書き込み、スレーブサーバーが読み取るバイナリログを介して行われます。複数のマスターサーバーを実装できますが、単一のサーバーでこれまで発生したことのない問題が発生します(推奨されません)。
1)マスターサーバーでレプリケーション専用のユーザーを作成します。*。*のレプリケーションスレーブを 'iverson'で識別される['replicationuser' @ '192.168.0.87'](https://blog.csdn.net/mailto:'%20rel=)に付与します。
2)メインサーバー上のすべてのテーブルとブロック書き込みステートメントをフラッシュします:読み取りロックでテーブルをフラッシュします;次に、メインサーバー上のバイナリバイナリファイル名とブランチを読み取ります:SHOW MASTERSTATUS;ファイルと位置の値を記録します。記録後にメインサーバーをシャットダウンします:mysqladmin -uroot -ppassw0rd shutdown
出力が空白の場合は、サーバーがバイナリロギングを有効にしていないことを意味します。my.cnfファイルの[mysqld]の下にlog-bin = mysql-binを追加すると、再起動後に使用できるようになります。
3)メインサーバーのスナップショットを作成します(スナップショット)
マスターサーバーにコピーする必要のあるデータベースのスナップショットを作成する必要があります。Windowsはzip形式を使用でき、LinuxとUnixはtarコマンドを使用するのに最適です。次に、それをスレーブサーバーmysqlのデータディレクトリにアップロードして解凍します。
cd mysql-data-dir
tar cvzf mysql-snapshot.tar ./mydb
注:スナップショットには、ログファイルや* .infoファイルを含めないでください。コピーするデータベースのデータファイル(* .frmおよび* .opt)ファイルのみを含める必要があります。
データベースバックアップ(mysqldump)を使用してサーバーからデータを復元し、データの一貫性を確保できます。
4)メインサーバーのmy.cnfファイルの[mysqld]セクションにlog-binオプションとserver-idが含まれていることを確認し、メインサーバーを起動します。
[mysqld]
log-bin=mysql-bin
server-id=1
5)スレーブサーバーを停止し、server-idを追加してから、スレーブサーバーを起動します。
[mysqld]
server-id=2
注:ここでのserver-idはスレーブサーバーのIDであり、マスターサーバーや他のスレーブサーバーとは異なる必要があります。
読み取り専用オプションをスレーブサーバーの構成ファイルに追加して、スレーブサーバーがマスターサーバーからのSQLのみを受け入れ、データが他の手段で変更されないようにすることができます。
6)スレーブサーバーで次のステートメントを実行し、オプションをシステムの実際の値に置き換えます。
change master to MASTER_HOST='master_host', MASTER_USER='replication_user',MASTER_PASSWORD='replication_pwd',
MASTER_LOG_FILE='recorded_log_file_name',MASTER_LOG_POS=log_position;
7)。スレーブスレッドを開始します:mysql> START SLAVE;スレーブスレッドを停止します:stop slave;(注:マスターサーバーのファイアウォールは、ポート3306の接続を許可する必要があります)
検証:この時点で、マスターサーバーとスレーブサーバーのデータは同じである必要があります。マスターサーバーのデータの挿入、変更、削除はスレーブサーバーに更新され、テーブルの作成と削除は同じです。
一般的に使用されるコマンド:
1 )バージョンを表示
mysqladmin -u root -p version
2 )Mysql接続に失敗しました
例外:エラー2003(HY000):MySQLサーバーに接続できません
解決する:
1.提起された質問
/usr/local/webserver/mysql/bin/mysql -u root -h 172.29.141.112 -p -S /tmp/mysql.sock
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '172.29.141.112' (113)
2.問題分析
上記の問題には、次の可能性があります
**1.**スキップネットワーキングは、my.cnf構成ファイルで構成されます
skip-networkingパラメーターを使用すると、すべてのTCP / IPポートが監視されなくなります。つまり、ローカルマシンの外にある場合、他のクライアントはネットワークを使用してmysqlサーバーに接続できません。
したがって、このパラメータをコメントアウトする必要があります。
**2.**my.cnf構成ファイル内のbindaddressのパラメーター構成
bindaddress、一部はbind-addressです。このパラメーターは、どのIPアドレスを構成するかを指定するためのものであり、mysqlサーバーはどのIPアドレス要求にのみ応答するため、このパラメーターをコメントアウトする必要があります。
**3.**ファイアウォールの理由
/etc/init.d/iptablesstopを使用してファイアウォールをオフにします
私の問題はこの理由によって引き起こされます。 mysqlサーバーのファイアウォールをオフにすることで使用できます。
3.問題の解決
**1.**上記の最初の理由である場合は、my.cnfを見つけて、skip-networkingパラメーターをコメントアウトします。
sed -i 's%skip-networking%#skip-networking%g' my.cnf
**2.**上記の2番目の理由である場合は、my.cnfを見つけて、bind-addressパラメーターをコメントアウトします。
sed -i 's%bind-address%#bind-address%g' my.cnf
sed -i 's%bindaddress%#bindaddress%g' my.cnf
このパラメータを変更した後、確認することをお勧めします。
**3.**上記の3番目の理由である場合は、ファイアウォールをオフにするか、それに応じて構成します
/etc/init.d/iptables stop
追加:
1 )処理中のプロセスを表示します。
show processlist;
2 )データベースが占めるスペースを表示します。
show table status from some_database;
例:** top_500 **からのテーブルステータスの表示;#top_500はデータベースです
SELECT table_schema top_500, sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
クエリ結果は次のとおりです。
参考資料:
[ Ubuntuのインストールと構成Mysql](http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html)
[ MySQLコマンド操作(Linuxプラットフォーム)](http://blog.csdn.net/sunboy_2050/article/details/6856358)
[ Ubuntu12.04にMySQL5.5.25をインストールします](http://www.cnblogs.com/eastson/archive/2012/06/09/2543489.html)
Recommended Posts