2011-06-22 14 views
6

Ben CI programlı olarak veritabanları ve kullanıcılar oluşturmak istiyorum. Şimdiye kadar bu 2 basit MySQL deyim var.Codeigniter, MySQL için tablo ve kullanıcı yaratın

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

ve

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'@'%'; 

olanlar Aktif Record dönüştürülebilir veya CI kullanıcılar/tablolar oluşturma kendi yol sağlar yapar edilebilir mi? i

DÜZENLEME ... dokümanları aramak ve bir şey bulamadı: Ben bir intranet uygulaması olarak bunu izinleri

cevap

4

CodeIgniter'ın Database Forge olarak adlandırılan bir sınıf sağlar hakkında çok merak etmeyin, bazı işlevleri içeren DB'nizde temel bakımı gerçekleştirmek için kullanılabilir.

$this->load->dbforge() 

if ($this->dbforge->create_database('my_db')) 
{ 
    echo 'Database created!'; 
} 

ve ilgili ekleyerek kullanıcıların, olası ama eğer onun iyi bir antrenman bilememesi veya yok.

ve ayrıca sorguları çalıştıran mysql kullanıcının db oluşturma izinlerine sahip olduğundan emin olun.

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

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

Teşekkürler, Krish, ama ilk kontrollerden sadece tablolar oluşturmanın bir yolunu sağlar, kullanıcılara –

+0

cevabı düzenledim ... ama iyi bir uygulama yapıp yapmadığımı gerçekten bağışlamıyorum. – Vamsi

+1

çalışıyor ama db-> insert ('user', $ data); '' 'db-> insert ('mysql.user', $ data);' –

2

Bence biraz uzakta olabilir

$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); 

Benim sözdizimi deneyebilirsiniz anlamak EĞER.

Esasen - mysql veritabanını kullanın, doğrudan user tablosuna ekleyin. Bununla birlikte, bazı ana bilgisayarlar bu yönerge erişimi reddedebilir, ancak bu yönlendiriciye erişimi reddedebilir.

+0

hmmm, akıllı :) tıpkı benim sorumu güncellediğim gibi, izin problemi yok ... mantığınızı deneyeceğim dışarı çalışır ve –

+1

çalışırsa, teşekkürler Ross, işe yarıyor, ama Krish'ın cevabını daha eksiksiz olduğu için kabul edeceğim. –