CodeIgniter,为MySQL创建表格和用户

7

我希望能够通过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个回答

5

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

$this->load->dbforge()

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

关于添加用户的问题,这是可以实现的,但我不确定是否是一个好的做法。

同时,请确保运行查询的mysql用户具有创建数据库的权限。

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

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

谢谢,Krish,但从最初的检查中,它只提供了创建表而不是用户的方法。 - Paris Liakos
修改了答案,但我真的不知道这是否是一个好的做法。 - Vamsi Krishna B
1
它可以工作,但我不得不将 db->insert('user', $data); 更改为 db->insert('mysql.user', $data); - Paris Liakos
感谢您的回答并接受了它。请不要忘记纠正您的答案 ;) - Paris Liakos

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 表中。

但是,一些主机可能会拒绝直接访问此表。


嗯,聪明啊 :) 就像我在问题上更新的那样,没有权限问题...我会尝试你的逻辑并告诉你它是否有效。 - Paris Liakos
1
谢谢Ross,它有效了,但我会接受Krish的答案,因为它更完整。再次感谢。 - Paris Liakos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接