Fedora Users Forum

Fedoraユーザのためのサポートフォーラム
現在時刻 - 2018年12月17日(月) 10:16

All times are UTC + 9 hours





新しいトピックを投稿する トピックへ返信する  [ 8 件の記事 ] 
作成者 メッセージ
 記事の件名: MySQL の文字化け解消について
投稿記事Posted: 2009年9月09日(水) 18:38 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271

Sponsored Links

こんばんわ、りなっくす初心者です

データベースの勉強をしてみようと思いまして
MySQL をインストールしてみました

参考サイトは

はじめての自宅サーバ構築 - Fedora/CentOS -
です


yum -y install mysql-server
で必要なパッケージをインストール

次に、yum -y install mysql-server で mysql をインストールしました
 コード: 全選択 大枠 小枠
[snow@localhost ~]$ su
パスワード:
[root@localhost snow]# yum -y install mysql-server
Loaded plugins: fastestmirror, presto, protectbase, refresh-packagekit
Loading mirror speeds from cached hostfile
* fedora: ftp.riken.jp
* livna: rpm.livna.org
* rpmfusion-free: mirrors.tummy.com
* rpmfusion-free-updates: mirrors.tummy.com
* rpmfusion-nonfree: mirrors.tummy.com
* rpmfusion-nonfree-updates: mirrors.tummy.com
* updates: ftp.riken.jp
1 packages excluded due to repository protections
Setting up Install Process
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
--> Running transaction check
---> Package mysql-server.i586 0:5.1.37-1.fc11 set to be updated
--> Processing Dependency: mysql = 5.1.37-1.fc11 for package: mysql-server-5.1.37-1.fc11.i586
--> Processing Dependency: perl-DBI for package: mysql-server-5.1.37-1.fc11.i586
--> Processing Dependency: perl(DBI) for package: mysql-server-5.1.37-1.fc11.i586
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.37-1.fc11.i586
--> Running transaction check
---> Package mysql.i586 0:5.1.37-1.fc11 set to be updated
---> Package perl-DBD-MySQL.i586 0:4.010-1.fc11 set to be updated
---> Package perl-DBI.i586 0:1.607-2.fc11 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql-server i586 5.1.37-1.fc11 updates 11 M
Installing for dependencies:
mysql i586 5.1.37-1.fc11 updates 3.8 M
perl-DBD-MySQL i586 4.010-1.fc11 fedora 171 k
perl-DBI i586 1.607-2.fc11 fedora 782 k

Transaction Summary
================================================================================
Install 4 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 15 M
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 15 M
(1/4): mysql-5.1.37-1.fc11.i586.rpm | 3.8 MB 00:12
(2/4): mysql-server-5.1.37-1.fc11.i586.rpm | 11 MB 00:30
(3/4): perl-DBD-MySQL-4.010-1.fc11.i586.rpm | 171 kB 00:00
(4/4): perl-DBI-1.607-2.fc11.i586.rpm | 782 kB 00:02
--------------------------------------------------------------------------------
Total 254 kB/s | 15 MB 01:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-DBI-1.607-2.fc11.i586 1/4
Installing : perl-DBD-MySQL-4.010-1.fc11.i586 2/4
Installing : mysql-5.1.37-1.fc11.i586 3/4
Installing : mysql-server-5.1.37-1.fc11.i586 4/4

Installed:
mysql-server.i586 0:5.1.37-1.fc11

Dependency Installed:
mysql.i586 0:5.1.37-1.fc11 perl-DBD-MySQL.i586 0:4.010-1.fc11
perl-DBI.i586 0:1.607-2.fc11

Complete!
[root@localhost snow]#


次に、 /etc/my.cnf  ファイル内に
language=/usr/share/mysql/japanese/ 
を設定ファイル内に追記することで出力メッセージを日本語化
 コード: 全選択 大枠 小枠
[root@localhost snow]# vi /etc/my.cnf
language=/usr/share/mysql/japanese/



次に MySQL を起動しました
/etc/rc.d/init.d/mysqld start で起動します
 コード: 全選択 大枠 小枠
[root@localhost snow]# /etc/rc.d/init.d/mysqld start
MySQL データベースを初期化中: Installing MySQL system tables...
090907 21:49:19 [Warning] Forcing shutdown of 2 plugins
OK
Filling help tables...
090907 21:49:19 [Warning] Forcing shutdown of 2 plugins
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available at
Support MySQL by buying support/licenses from

[ OK ]
MySQL を起動中: [ OK ]
[root@localhost snow]#



MySQLの停止
/etc/rc.d/init.d/mysqld stop で停止です
 コード: 全選択 大枠 小枠
[root@localhost snow]# /etc/rc.d/init.d/mysqld stop
MySQL を停止中: [ OK ]


その後、特には問題がなかったのですが、
引用:
レコードの更新(「Name」が"hogehoge"のレコードを"fedora"に変更)

を行ったときに、文字化けしているのを発見

show variables like 'character_set_database';
で 文字コード を調べてみました
 コード: 全選択 大枠 小枠
mysql> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.01 sec)

mysql>

たしか、文字コードがlatin 1 だと日本語が文字化けすると思いました

このため、
mysql 文字コード で検索し


MySQL 文字化けを防ぐ、文字コードの確認と設定

を参考に、文字コードを変更してみようとおもったのですが
引用:
■文字コードを設定する

/etc/my.cnf を編集する。

[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[client]と[mysqld]の設定に、上記の記述を加える。

utf8: UTF-8を指定するとき。

sjis: Shift JIS を指定するとき。

ujis: EUC JP を指定するとき。

skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするため。

となっているのですが
私の環境では、/etc/my.conf の中身には
client の記述がありません
コード:
mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
language=/usr/share/mysql/japanese/

user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring="nodeid=4;host=localhost:1186"

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
# If you are running a MySQL Cluster storage daemon (ndbd) on this machine,
# adjust its connection to the management daemon here.
# Note: ndbd init script requires this to include nodeid!
connect-string="nodeid=2;host=localhost:1186"

[ndb_mgm]
# connection string for MySQL Cluster management tool
connect-string="host=localhost:1186"



また、

Ruby on RailsとMySQLで日本語(UTF-8)を使う
においても
引用:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set = utf8

[mysql.server]
user=mysql
basedir=/var/lib
default-character-set = utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set = utf8

[mysql]
default-character-set = utf8


となっています
引用:

[mysql.server]
user=mysql
basedir=/var/lib
default-character-set = utf8


引用:
[client]
default-character-set=utf8

の部分は自分で記述するのでしょうか?
それとも、なにか足りないのでしょうか?

すみませんが、アドバイスお願いします


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年9月09日(水) 22:34 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250

より引用。
引用:
[group]

groupとはプログラムの名前、またはオプションをセットしたいグループを示します。グループラインの後には、オプションファイル、あるいは別のグループラインの端が与えられるまで、オプションをセットするラインは全て指定されたグループに当てはまります。

引用:
オプショングループ名がプログラム名と同じである場合、グループ中のオプションは特定のそのプログラムに当てはまります。例えば、[mysqld]および[mysql]グループは、mysqldサーバおよびmysqlクライアントプログラムにそれぞれ当てはまります。

[client]オプショングループは、すべてのクライアントプログラム(mysqldは除く)によって解読されます。これによって全てのクライアントに当てはまるオプションを指定することが可能になります。


つまるところ、mysqlコマンドでアクセスするのであればお調べになったどちらの記述でも大丈夫だと思いますよ。

Sponsored links



トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年9月09日(水) 23:34 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
code_air_edge さん、お返事ありがとうございます :)

少し理解できない部分がありますが、

・[mysqld] が mysqldサーバ の設定部分
・[mysql] が mysqlクライアント の設定部分 

という感じになるのでしょうか?

となると
vi /etc/my.cnf
で設定ファイルを開き、
引用:

[client]
default-character-set=utf8


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
language=/usr/share/mysql/japanese/


default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8


user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring="nodeid=4;host=localhost:1186"

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
# If you are running a MySQL Cluster storage daemon (ndbd) on this machine,
# adjust its connection to the management daemon here.
# Note: ndbd init script requires this to include nodeid!
connect-string="nodeid=2;host=localhost:1186"

[ndb_mgm]
# connection string for MySQL Cluster management tool
connect-string="host=localhost:1186"



というように追記すればよいのでしょうか?


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年9月10日(木) 07:02 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
りなっくす初心者 さんが書きました:
・[mysqld] が mysqldサーバ の設定部分
・[mysql] が mysqlクライアント の設定部分 

という感じになるのでしょうか?

仰るとおりです。


設定もそれでよろしいかと。ただ、先に作られたlatin1になってしまっているDBは作成しなおす必要がある、かも。
ちょっとコマンドから変更できたかは忘れちゃいました。Apache+phpが使える環境でしたら、phpMyAdminを使うと洛に管理できますよー。


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年9月11日(金) 00:19 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
code_air_edgeさん、お返事ありがとうございます :)

日曜日には時間が取れそうなので、さっそく試してみます

Apache+phpが使える環境でしたら、phpMyAdminを使うと洛に管理できるんですね :)

まずは 現状の問題を解決し、そして実践してみたいとおもいます

先に作られたlatin1になってしまっているDBについてですが


MySQLの文字コードに関するメモ
のなかにあった書き込みの

引用:
alter database 〜DB名 character set utf8

で 文字コードを変更できるみたいです :)


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年9月14日(月) 21:59 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
こんばんわ、りなっくす初心者です

無事に、MySQL の文字コードを変更することができました


vi /etc/my.cnf
で設定ファイルを開き、
 コード: 全選択 大枠 小枠

[client]
default-character-set=utf8


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
language=/usr/share/mysql/japanese/


default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8


user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring="nodeid=4;host=localhost:1186"

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[ndbd]
# If you are running a MySQL Cluster storage daemon (ndbd) on this machine,
# adjust its connection to the management daemon here.
# Note: ndbd init script requires this to include nodeid!
connect-string="nodeid=2;host=localhost:1186"

[ndb_mgm]
# connection string for MySQL Cluster management tool
connect-string="host=localhost:1186"


と追記してみました

そして、/etc/rc.d/init.d/mysqld start でMySQL を起動し確認してみました
 コード: 全選択 大枠 小枠
[snow@localhost ~]$ su
パスワード:
[root@localhost snow]# /etc/rc.d/init.d/mysqld start
MySQL を起動中: [ OK ]


mysql -u root -p でログインします
コード:
[root@localhost snow]# mysql -u root -p
Enter password:                                                  sql> insert intmysql>


show variables like 'character_set_database'; で文字コードを確認してみました
 コード: 全選択 大枠 小枠
mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.00 sec)

mysql>


問題ないようです :)

show variables like "char%";でも確認してみした
 コード: 全選択 大枠 小枠
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql>

ここでさらなる疑問がわきました

文字コードは、utf-8以外にもあります
(参照)
引用:
utf8: UTF-8を指定するとき。

sjis: Shift JIS を指定するとき。

ujis: EUC JP を指定するとき。


文字コードを utf-8 ではなく、例えば sjis
にするには
引用:
[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

と記述されている部分を utf8 から sjis に変更すればよいのでしょうか?

※ skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするためとのことです


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年11月09日(月) 22:00 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
まず、airさんのおすすめのphpmyadminをいじってみることをおすすめします。よくできたツールで、視覚的に構造をつかめます。どんなものかは、こちらでテストできます。



インストールがちょい面倒ですが、どこかに簡単にインストールできる仕組みのある場所があったはずですが、見つけるのが面倒なので。

「MySQL 接続の照合順序」がcollationです。

そこを見てもらえばsjisの場合、sjis_japanese_ciになるようですね。

英語のツールでよければ、mysql-gui-toolがSQLのクエリーブラウザ、mysql-administratorがDB関連の設定ツールです。この2つはリポに登録されています。(純正ツールです)

私は直接、SQLを発行する機会はないのですが、DBの設定と作成には、mysql-admin....を、collocationをちょっといじるとか、内容を一部変更するだけの場合は、phpmyadminを使います。

まあ、勉強を目的とされているようですから、苦労するのもいいですが、実際SQLを直接発行するようなプログラムを作成するのでないのなら、こういったツールを使用し、効率をあげる方法もあることを覚えておいても損はないでしょう。


トップへ
 
 記事の件名: Re: MySQL の文字化け解消について
投稿記事Posted: 2009年11月22日(日) 18:53 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
---------
HiroKwsさん、こんばんわ

返信がおそくなりすみません

今回は mysql のツールを紹介していただきありがとうございます

たしかに効率的に動かすツールをしっておくことは重要だと思います :)

まだいろいろと勉強する所が多いのですが、頑張って学習してみます :)

Sponsored links



トップへ
 
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 8 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron

無料でマイフォーラムを作成する! · php-BB© · Internationalization Project · 不正利用を報告する · 使用条件/プライバシーポリシー
© Forums-Free.com 2009