2011-06-22 7 views
6

プログラムでCIを使用してデータベースとユーザーを作成したい。これまでのところ私はこれらの2つの簡単なMySQLステートメントを持っています。Codeigniter、MySQL用のテーブルとユーザーを作成する

CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

CREATE USER 'test_user'@'%' IDENTIFIED BY '***'; 

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'%' IDENTIFIED BY '***' WITH GRANT 
OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 
MAX_USER_CONNECTIONS 0 ; 

GRANT ALL PRIVILEGES ON `testdb` . * TO 'test_user'@'%'; 

は、アクティブレコードにそれらを変換することができ、またはCIは、ユーザー/テーブルを作成する独自の方法を提供していますか?私は、ドキュメントを検索し、何かを見つけることができませんでした...

EDIT:私は、イントラネットアプリケーションとしてこれを行うには、その権限

答えて

4

CodeIgniterにはDatabase Forgeと呼ばれるクラスを提供しての心配、それはいくつかの機能が含まれていませんあなたのDBの基本的なメンテナンスを実行するために使用することができます。

ユーザーの追加については、その可能性がありますが、その良い練習かどうかわかりません。

また、クエリを実行するmysqlユーザーにdbを作成する権限があることを確認してください。

$data = array(
    'Host' => 'localhost' , 
    'User' => 'krish' , 
    'Password' => 'somepass', 
    'Select_priv' => 'Y', 
    'Insert_priv' => 'Y' 
); 

$this->db->insert('mysql.user', $data); 
+0

ありがとう、Krishですが、最初のチェックからは、ユーザーは –

+0

ではなく、テーブルを作成する方法しか提供されていません。しかし、私は実際にその良い練習かどうかはわかりません。 – Vamsi

+1

それは動作しますが、私は 'db-> insert( 'user'、$ data);を' db-> insert( 'mysql.user'、$ data); ' –

2

私は理解していれば、あなたは

$config['database'] = 'mysql'; 
// other config details e.g username. port, pass 

$this->load->database($config); 
$query = "INSERT INTO user (host, user, password, select_priv, 
      insert_priv, update_priv) 
      VALUES ('localhost', 'user', PASSWORD('mypass'), 'Y', 'Y', 'Y')"; 
$this->db->query($query); 

私の構文は少しオフになる場合もあり試すことができます。

mysqlデータベースを使用して、userテーブルに直接挿入します。

しかし、一部のホストは、このディレクティへのアクセスを拒否することがあります。

+0

hmmm、smart :)あなたのロジックを試してみませんか?それが動作するかどうかを知らせてください –

+1

ロスに感謝、それは動作しますが、それはより完全なので、私はクリシュの答えを受け入れるでしょう。 –

関連する問題