installer now works when using mysql
This commit is contained in:
parent
5f69a7c5e5
commit
fde08b2389
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<database>
|
||||
|
||||
<name>owncloud</name>
|
||||
<name>*dbname*</name>
|
||||
<create>true</create>
|
||||
<overwrite>false</overwrite>
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>appconfig</name>
|
||||
<name>*dbprefix*appconfig</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>foldersize</name>
|
||||
<name>*dbprefix*foldersize</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -52,7 +52,7 @@
|
|||
<type>text</type>
|
||||
<default></default>
|
||||
<notnull>true</notnull>
|
||||
<length>512</length>
|
||||
<length>128</length>
|
||||
</field>
|
||||
|
||||
<field>
|
||||
|
@ -78,7 +78,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>group_user</name>
|
||||
<name>*dbprefix*group_user</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -104,7 +104,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>groups</name>
|
||||
<name>*dbprefix*groups</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -131,7 +131,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>locks</name>
|
||||
<name>*dbprefix*locks</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -267,7 +267,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>log</name>
|
||||
<name>*dbprefix*log</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -324,7 +324,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>preferences</name>
|
||||
<name>*dbprefix*preferences</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -366,7 +366,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>properties</name>
|
||||
<name>*dbprefix*properties</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -431,7 +431,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>publiclink</name>
|
||||
<name>*dbprefix*publiclink</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
@ -481,7 +481,7 @@
|
|||
|
||||
<table>
|
||||
|
||||
<name>users</name>
|
||||
<name>*dbprefix*users</name>
|
||||
|
||||
<declaration>
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ require_once( 'lib/base.php' );
|
|||
require_once( 'appconfig.php' );
|
||||
require_once( 'template.php' );
|
||||
|
||||
|
||||
// check if the server is correctly configured for ownCloud
|
||||
$errors=OC_UTIL::checkServer();
|
||||
if(count($errors)>0){
|
||||
|
|
|
@ -51,7 +51,6 @@ class OC_USER_DATABASE extends OC_USER_BACKEND {
|
|||
public static function createUser( $uid, $password ){
|
||||
$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*users` WHERE `uid` = ?" );
|
||||
$result = $query->execute( array( $uid ));
|
||||
|
||||
// Check if the user already exists
|
||||
if ( $result->numRows() > 0 ){
|
||||
return false;
|
||||
|
|
|
@ -279,7 +279,7 @@ class OC_DB {
|
|||
// Connect if this did not happen before
|
||||
if(!self::$schema){
|
||||
require_once('MDB2/Schema.php');
|
||||
self::$schema=&MDB2_Schema::factory(self::$DBConnection);
|
||||
self::$schema=MDB2_Schema::factory(self::$DBConnection);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -65,34 +65,45 @@ class OC_INSTALLER{
|
|||
}else{
|
||||
$query="SELECT user FROM mysql.user WHERE user='$dbuser'";//this should be enough to check for admin rights in mysql
|
||||
if(mysql_query($query,$connection)){
|
||||
self::createDBUser($username,$password,$connection);
|
||||
//use the admin login data for the new database user
|
||||
self::createDBUser($username,$password);
|
||||
OC_CONFIG::setValue('dbuser',$username);
|
||||
OC_CONFIG::setValue('dbpass',$password);
|
||||
}else{
|
||||
OC_CONFIG::setValue('dbuser',$dbuser);
|
||||
OC_CONFIG::setValue('dbpass',$dbpass);
|
||||
|
||||
//create the database
|
||||
self::createDatabase($dbname,$dbuser);
|
||||
self::createDatabase($dbname,$username,$connection);
|
||||
}else{
|
||||
OC_CONFIG::setValue('dbuser',$dbuser);
|
||||
OC_CONFIG::setValue('dbpassword',$dbpass);
|
||||
|
||||
//create the database
|
||||
self::createDatabase($dbname,$dbuser,$connection);
|
||||
}
|
||||
}
|
||||
//fill the database if needed
|
||||
$query="SELECT * FROM $dbname.{$dbtableprefix}users";
|
||||
$result = mysql_query($query,$connection);
|
||||
if (!$result) {
|
||||
OC_DB::createDbFromStructure('db_structure.xml');
|
||||
}
|
||||
mysql_close($connection);
|
||||
}else{
|
||||
//in case of sqlite, we can always fill the database
|
||||
OC_DB::createDbFromStructure('db_structure.xml');
|
||||
}
|
||||
|
||||
//create the user and group
|
||||
OC_USER::createUser($username,$password);
|
||||
OC_GROUP::createGroup('admin');
|
||||
OC_GROUP::addToGroup($username,'admin');
|
||||
|
||||
//and we are done
|
||||
OC_CONFIG::setValue('installed',true);
|
||||
}
|
||||
return $error;
|
||||
}
|
||||
|
||||
public static function createDatabase($name,$adminUser,$adminPwd){//TODO refactoring this
|
||||
$CONFIG_DBHOST=$options['host'];
|
||||
$CONFIG_DBNAME=$options['name'];
|
||||
$CONFIG_DBUSER=$options['user'];
|
||||
$CONFIG_DBPWD=$options['pass'];
|
||||
$CONFIG_DBTYPE=$options['type'];
|
||||
public static function createDatabase($name,$user,$connection){
|
||||
//we cant user OC_BD functions here because we need to connect as the administrative user.
|
||||
$query="CREATE DATABASE IF NOT EXISTS `$name`";
|
||||
$result = mysql_query($query,$connection);
|
||||
|
@ -102,18 +113,13 @@ class OC_INSTALLER{
|
|||
echo($entry);
|
||||
}
|
||||
$query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";
|
||||
$result = mysql_query($query,$connection);
|
||||
if (!$result) {
|
||||
$entry='DB Error: "'.mysql_error($connection).'"<br />';
|
||||
$entry.='Offending command was: '.$query.'<br />';
|
||||
echo($entry);
|
||||
}
|
||||
$result = mysql_query($query,$connection);//this query will fail if there aren't the right permissons, ignore the error
|
||||
}
|
||||
|
||||
private static function createDBUser($name,$password){
|
||||
private static function createDBUser($name,$password,$connection){
|
||||
//we need to create 2 accounts, one for global use and one for local user. if we don't speccify the local one,
|
||||
// the anonymous user would take precedence when there is one.
|
||||
$query="CREATE USER 'name'@'localhost' IDENTIFIED BY '$password'";
|
||||
$query="CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
|
||||
$result = mysql_query($query,$connection);
|
||||
$query="CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
|
||||
$result = mysql_query($query,$connection);
|
||||
|
|
Loading…
Reference in New Issue