【问题标题】:Codeigniter,create tables and users for MySQLCodeigniter,为 MySQL 创建表和用户
【发布时间】:2011-09-20 09:24:48
【问题描述】:

我想以编程方式使用 CI 创建数据库和用户。到目前为止,我有这 2 个简单的 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 提供自己的方式来创建用户/表?我搜索文档并找不到任何内容...

编辑:我是作为 Intranet 应用程序执行此操作的,因此无需担心权限

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    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,但从第一次检查开始,它只提供了一种创建表的方法,而不是用户
    • 编辑了答案..但我真的不知道这是不是一个好习惯。
    • 它有效,但我不得不将 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 表中。

    不过,有些主机可能会拒绝访问此目录。

    【讨论】:

    • 嗯,聪明 :) 就像我更新了我的问题一样,没有权限问题...我会尝试你的逻辑并让你知道它是否有效
    • 感谢罗斯,它有效,但我会接受 Krish 的回答,因为它更完整。再次感谢
    猜你喜欢
    • 2014-06-06
    • 2016-03-15
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多