2008年12月07日

OpenSimサーバ構築記録10/OSX版MySQLで動かす

● データベースを、「SQLite」から「MySQL」に。

OpenSimインストール直後のデータベースは内蔵されているSQLiteです。
OpenSimをグリッドモードで公開するためには、MySQLにする必要があります。

まずは、スタンドアロンモードのままで、MySQLに切り替えてみました。

(使用しているOSは、前回と同じく、Mac OS X Leopard 10.5.5 です。)



● MySQLのダウンロードとインストール

MySQLの安定版、5.1を入れてみました。

mysql-5.1.30-osx10.5-x86.dmg
http://dev.mysql.com/downloads/mysql/5.1.html

(サンマイクロのロゴが、なんとも複雑な気分です。。。><)



途中で、ユーザ登録画面になりますが、登録不要の方は、その下にある
「私をダウンロードに連れてって」をクリックすればいいです。



パッケージをインストールします。
mysql-5.1.30-osx10.5-x86.pkg
MySQLStartupItem.pkg



途中で聞いてくる受信接続は、「許可」を選びます。
「システム環境設定」の「セキュリティ」でも、設定できます。



ペインファイルをインストールします。
MySQL.prefPane



MySQLの起動/停止画面が表示されます。



ペインファイルが、「システム環境設定」にインストールされました。





● ターミナルでも確認

MySQLは「/usr/local/」配下にインストールされます。
$ ls  /usr/local/
mysql@
mysql-5.1.30-osx10.5-x86/


「.profile」で、パスを通しておくと便利です。
$ cat  .profile
export  PATH="${PATH}:/usr/local/mysql/bin"
export  PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib/
pkgconfig/:${PKG_CONFIG_PATH}"



プロセスが存在していることを確認します。
$ ps  -u  MySQL
  UID   PID TTY  TIME      CMD
   74  2325 ??    0:00.12 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/





● MySQLの管理者アカウントの修正

MySQLに管理者権限でログインします。
パスワード無しでもログインできてしまいます。
$ mysql  -u  root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 140
Server version: 5.1.30 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


データベースの一覧を確認します。
mysql> show  databases;
+--------------------+
| Database
+--------------------+
| information_schema
| mysql
| test
+--------------------+
3 rows in set (0.00 sec)


今から操作するデータベースを「mysql」にします。
mysql> use  mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


データベース「mysql」内の、テーブル一覧を表示します。
mysql> show  tables;
+---------------------------+
| Tables_in_mysql
+---------------------------+
| columns_priv
| db
| ・・・・・・・・・・
| ・・・・・・・・・・
| user
+---------------------------+
23 rows in set (0.00 sec)


テーブル「user」内の、管理者一覧を表示します。
userの無い匿名アカウントが2件あります。
全てのアカウントにパスワードがありません。
mysql> select  host,user,password  from  user;
+--------------------------------------+------+----------+
| host        | user         | password         |
+--------------------------------------+------+----------+
| localhost   | root     |          |
| マシン名    | root     |          |
| 127.0.0.1 | root     |          |
| localhost   |           |          |
| マシン名    |           |          |
+--------------------------------------+------+----------+
5 rows in set (0.00 sec)


匿名アカウント2件を、削除します。
mysql> delete  from  user  where  user='';
Query OK, 2 rows affected (0.00 sec)


管理者アカウント「root」に、全権限と、パスワードを登録します。
全て同じで、いいです。
mysql> grant  all  on  *.*  to  root@localhost  identified  by  'パスワード';
Query OK, 0 rows affected (0.00 sec)

mysql> grant  all  on  *.*  to  root@マシン名  identified  by  'パスワード';
Query OK, 0 rows affected (0.00 sec)

mysql> grant  all  on  *.*  to  root@127.0.0.1  identified  by  'パスワード';
Query OK, 0 rows affected (0.00 sec)


管理者一覧を、再確認。
パスワードはハッシュで暗号化されています。
mysql> select  host,user,password  from  user;
+--------------------------------------+------+-------------------------------------------+
| host        | user         | password         |
+--------------------------------------+------+-------------------------------------------+
| localhost   | root     | *B99937FFA12B418CF2216C5B84B899A343698672 |
| マシン名    | root     | *B99937FFA12B418CF2216C5B84B899A343698672 |
| 127.0.0.1 | root     | *B99937FFA12B418CF2216C5B84B899A343698672 |
+--------------------------------------+------+-------------------------------------------+
3 rows in set (0.00 sec)





● パスワードの確認と、データベース作成

MySQLに再ログインし、データベース「opensim」を作ります。
ログイン時には、パスワードが必要になってます。
mysql> quit
Bye

$ mysql  -u  root  -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 548
Server version: 5.1.30 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create  database  opensim;
Query OK, 1 row affected (0.00 sec)

mysql> show  databases;
+--------------------+
| Database |
+--------------------+
| information_schema
| mysql
| opensim
| test
+--------------------+
4 rows in set (0.00 sec)


※データベース「opensim」内のテーブルは、OpenSim起動時に自動的に作成されます。




● データベース削除の方法

ちなみに、dropコマンドでデータベースを削除できます。
途中で失敗したら、何度でもやりなおせばいいです。
mysql> drop  database  opensim;





● OpenSim.iniファイルの修正

OpenSim.iniファイルの、SQLiteの記述部分をMySQLに変更します。
接続文字列が長いですけど、全て同じです。
パスワードを間違えないように。

【~/opensim/0.6.0/bin/OpenSim.ini】
[Startup]
gridmode = False

clientstack_plugin = OpenSim.Region.ClientStack.LindenUDP.dll

; ##
; ## STORAGE
; ##

;storage_plugin = OpenSim.Data.SQLite.dll
;storage_connection_string = "URI=file:OpenSim.db,version=3"
storage_plugin = OpenSim.Data.MySQL.dll
storage_connection_string = "Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;"


estate_connection_string="Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;"

;asset_database = "sqlite"
asset_database = "local"

see_into_this_sim_from_neighbor = True

; ##
; ## PHYSICS
; ##

meshing = ZeroMesher
;meshing = Meshmerizer
;physics = basicphysics
physics = OpenDynamicsEngine
physical_prim = True

startup_console_commands_file = "startup_commands.txt"
shutdown_console_commands_file = "shutdown_commands.txt"
serverside_object_permissions = False
storage_prim_inventories = True

; ##
; ## ScriptEngine
; ##

;DefaultScriptEngine = ScriptEngine.DotNetEngine
DefaultScriptEngine = XEngine

[StandAlone]
accounts_authenticate = False
welcome_message = "Welcome to OpenSimulator"

;asset_plugin = OpenSim.Data.SQLite.dll
asset_plugin = OpenSim.Data.MySQL.dll
asset_source = "Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;"


;inventory_plugin = OpenSim.Data.SQLite.dll
inventory_plugin = OpenSim.Data.MySQL.dll
inventory_source = "Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;"


;userDatabase_plugin = OpenSim.Data.SQLite.dll
userDatabase_plugin = OpenSim.Data.MySQL.dll
user_source = "Data Source=localhost;Database=opensim;User ID=root;Password=パスワード;"


dump_assets_to_file = False

[Network]
http_listener_port = 9000
remoting_listener_port = 8895
default_location_x = 1000
default_location_y = 1000
grid_server_url = http://127.0.0.1:8001
grid_send_key = null
grid_recv_key = null
user_server_url = http://127.0.0.1:8002
user_send_key = null
user_recv_key = null
asset_server_url = http://127.0.0.1:8003
inventory_server_url = http://127.0.0.1:8004
secure_inventory_server = true






● OpenSimを起動して、データベースを確認

iniファイルに間違いがなければ、問題なく起動するはずです。
$ mono  OpenSim.exe


データベース「opensim」を確認します。
テーブルが自動的に作成されています。
mysql> use  opensim;
Database changed

mysql> show  tables;
+-------------------+
| Tables_in_opensim |
+-------------------+
| agents
| assets
| avatarappearance
| avatarattachments
| estate_groups
| estate_managers
| estate_map
| estate_settings
| estate_users
| estateban
| inventoryfolders
| inventoryitems
| land
| landaccesslist
| migrations
| primitems
| prims
| primshapes
| regionban
| regionsettings
| terrain
| userfriends
| users
+-------------------+
23 rows in set (0.00 sec)


テーブル「user」を確認します。
一番最初に作ったユーザアカウントが、SQLiteから、MySQLにコピーされています。
mysql> select  username,lastname,passwordHash  from  users;
+----------+----------+----------------------------------+
| username | lastname | passwordHash
+----------+----------+----------------------------------+
| Master    | Parvathi   | 7e740d0406af6583543729a786bfd96a
+----------+----------+----------------------------------+
1 row in set (0.00 sec)





● つぎは、グリッドモードで

これでデータベースを外出しできたので、安心してもの作りができます。
OpenSimをアップグレードする時に、うっかりデータベースを上書きしてしまった〜
なんて、最悪ですから。



同じカテゴリー(OpenSim)の記事
 再掲:OpenSim構築手順 (Linux版&OSGrid) (2009-04-18 19:33)
 OpenSimサーバ構築記録9(MacOSXコンパイル編) (2008-11-30 16:10)
 OpenSimサーバ構築記録8 (手作りファイアウォール編) (2008-09-07 11:14)
 OpenSimサーバ構築記録その7(暗号化しなくちゃ編) (2008-08-03 11:52)
 OpenSimサーバ構築記録その6(ブレンダーで土地作り編) (2008-07-19 00:07)
 OpenSimサーバ構築記録その5(外部Simサーバ接続編) (2008-07-08 19:43)

Posted by ぱすてる at 18:25│Comments(1)OpenSim
この記事へのコメント
誰でも使えるOpenSimが出るのを待ちきれなくなりました。そこで こちらを参考にさせて頂いて0.6.8とmysqlでトライしてみたら、コマンドの意味も解りませんでしたが、なんとか箱庭に入ることが出来ました。 解りやすく手順を追って教えていただけたこちらのHPのお陰で壁を越えた気がします,あきらめないでよかったです。 ありがとうヽ(*^^*)ノ。
Posted by わんこ at 2010年05月21日 15:24
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。