Codeigniter,为MySQL创建表和用户

时间:2011-06-22 13:13:22

标签: php mysql codeigniter

我想以编程方式使用CI创建数据库和用户。到目前为止,我有这两个简单的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'@'%';

可以将这些转换为Active Record,还是CI提供自己创建用户/表的方式?我搜索文档但找不到任何东西......

编辑:我这样做是一个内部网应用,所以不用担心权限

2 个答案:

答案 0 :(得分:5)

CodeIgniter提供了一个名为Database Forge的类,它包含一些可用于对数据库执行基本维护的函数。

$this->load->dbforge()

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

关于添加用户,它可能,但我不知道它是否是一个好的做法。

并确保运行查询的mysql用户具有创建db的权限。

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

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

答案 1 :(得分: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表。

然而,有些主持人可能会拒绝访问此直接链接。