You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@manifoldcf.apache.org by Shigeki Kobayashi <sh...@g.softbank.co.jp> on 2012/05/21 11:34:02 UTC

When running on MySQL initialize.sh causes access denied error

Hi guys.

I suppose some pepole use multiple servers to create MCF-MySQL environtment.
Well, I'm one of them but I found that initialize.sh causes access denied
error if DB server is seperated from MCF's.

Suppose each server's IP are like followings:

MySQL Server IP: A
MCF Server IP: B

and properties.xml has the follwing parameters and values:

 <property name="org.apache.manifoldcf.databaseimplementationclass"
value="org.apache.manifoldcf.core.database.DBInterfaceMySQL"/>
 <property name="org.apache.manifoldcf.dbsuperusername" value="root"/>
 <property name="org.apache.manifoldcf.dbsuperuserpassword"
value="<password>"/>
 <property name="org.apache.manifoldcf.database.name" value="manifoldcf"/>
 <property name="org.apache.manifoldcf.mysql.server" value="A"/>

Then, executing initialize.sh causes the follwing error:

Caused by: java.sql.SQLException: Access denied for user 'manifoldcf'@'B'
(using password: YES)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
        at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
        at
com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
        at
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
        at
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

The problem is that MCF requests MySQL to create a new "manifoldcf" user
with localhost access.
In this case, of course, MCF is on the server with IP B, MySQL should
create a new user with IP Address B.

The following method is the one creating a new MySQL user in the user
table.
Modifying the part where IP information is added solves this problem.


JAR NAME   :mcf-core.jar
PACKAGE    :org.apache.manifoldcf.core.database
CLASS NAME :DBInterfaceMySQL
METHOD NAME: public void createUserAndDatabase

            if(userName != null)
                try
                {
                    list.clear();
                    list.add(userName);
             //     list.add("localhost");
                    list.add(IP_ADDRESS_B);
                    list.add(password);
...
...
}


I guess it would be nice if properties.xml can have a new property taking
MCF server IP to
have MySQL create a "manifoldcf" user with that IP. What do you think?


Regards,

Shigeki

Re: When running on MySQL initialize.sh causes access denied error

Posted by Karl Wright <da...@gmail.com>.
I checked a fix into trunk.  The property is:

org.apache.manifoldcf.mysql.client

... which defaults to "localhost".

Karl


On Mon, May 21, 2012 at 9:17 PM, Shigeki Kobayashi
<sh...@g.softbank.co.jp> wrote:
> OK, I posted a ticket as CONNECTORS-476.
>
> Thanks.
>
> Shigeki
>
> 2012/5/21 Karl Wright <da...@gmail.com>
>>
>> This sounds like a reasonable fix.
>>
>> Would you be so kind as to create a ticket, and attach your proposed
>> change?  Adding a special property for mysql is also reasonable.
>>
>> Karl
>>
>> On Mon, May 21, 2012 at 5:34 AM, Shigeki Kobayashi
>> <sh...@g.softbank.co.jp> wrote:
>> >
>> > Hi guys.
>> >
>> > I suppose some pepole use multiple servers to create MCF-MySQL
>> > environtment.
>> > Well, I'm one of them but I found that initialize.sh causes access
>> > denied
>> > error if DB server is seperated from MCF's.
>> >
>> > Suppose each server's IP are like followings:
>> >
>> > MySQL Server IP: A
>> > MCF Server IP: B
>> >
>> > and properties.xml has the follwing parameters and values:
>> >
>> >  <property name="org.apache.manifoldcf.databaseimplementationclass"
>> > value="org.apache.manifoldcf.core.database.DBInterfaceMySQL"/>
>> >  <property name="org.apache.manifoldcf.dbsuperusername" value="root"/>
>> >  <property name="org.apache.manifoldcf.dbsuperuserpassword"
>> > value="<password>"/>
>> >  <property name="org.apache.manifoldcf.database.name"
>> > value="manifoldcf"/>
>> >  <property name="org.apache.manifoldcf.mysql.server" value="A"/>
>> >
>> > Then, executing initialize.sh causes the follwing error:
>> >
>> > Caused by: java.sql.SQLException: Access denied for user
>> > 'manifoldcf'@'B'
>> > (using password: YES)
>> >         at
>> > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
>> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
>> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
>> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
>> >         at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
>> >         at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
>> >         at
>> > com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
>> >         at
>> >
>> > com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
>> >         at
>> > com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
>> >         at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
>> >         at
>> > com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
>> >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> > Method)
>> >         at
>> >
>> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>> >
>> > The problem is that MCF requests MySQL to create a new "manifoldcf" user
>> > with localhost access.
>> > In this case, of course, MCF is on the server with IP B, MySQL should
>> > create
>> > a new user with IP Address B.
>> >
>> > The following method is the one creating a new MySQL user in the user
>> > table.
>> > Modifying the part where IP information is added solves this problem.
>> >
>> >
>> > JAR NAME   :mcf-core.jar
>> > PACKAGE    :org.apache.manifoldcf.core.database
>> > CLASS NAME :DBInterfaceMySQL
>> > METHOD NAME: public void createUserAndDatabase
>> >
>> >             if(userName != null)
>> >                 try
>> >                 {
>> >                     list.clear();
>> >                     list.add(userName);
>> >              //     list.add("localhost");
>> >                     list.add(IP_ADDRESS_B);
>> >                     list.add(password);
>> > ...
>> > ...
>> > }
>> >
>> >
>> > I guess it would be nice if properties.xml can have a new property
>> > taking
>> > MCF server IP to
>> > have MySQL create a "manifoldcf" user with that IP. What do you think?
>> >
>> >
>> > Regards,
>> >
>> > Shigeki
>> >
>> >
>
>
>
>

Re: When running on MySQL initialize.sh causes access denied error

Posted by Shigeki Kobayashi <sh...@g.softbank.co.jp>.
OK, I posted a ticket as CONNECTORS-476.

Thanks.

Shigeki

2012/5/21 Karl Wright <da...@gmail.com>

> This sounds like a reasonable fix.
>
> Would you be so kind as to create a ticket, and attach your proposed
> change?  Adding a special property for mysql is also reasonable.
>
> Karl
>
> On Mon, May 21, 2012 at 5:34 AM, Shigeki Kobayashi
> <sh...@g.softbank.co.jp> wrote:
> >
> > Hi guys.
> >
> > I suppose some pepole use multiple servers to create MCF-MySQL
> environtment.
> > Well, I'm one of them but I found that initialize.sh causes access denied
> > error if DB server is seperated from MCF's.
> >
> > Suppose each server's IP are like followings:
> >
> > MySQL Server IP: A
> > MCF Server IP: B
> >
> > and properties.xml has the follwing parameters and values:
> >
> >  <property name="org.apache.manifoldcf.databaseimplementationclass"
> > value="org.apache.manifoldcf.core.database.DBInterfaceMySQL"/>
> >  <property name="org.apache.manifoldcf.dbsuperusername" value="root"/>
> >  <property name="org.apache.manifoldcf.dbsuperuserpassword"
> > value="<password>"/>
> >  <property name="org.apache.manifoldcf.database.name"
> value="manifoldcf"/>
> >  <property name="org.apache.manifoldcf.mysql.server" value="A"/>
> >
> > Then, executing initialize.sh causes the follwing error:
> >
> > Caused by: java.sql.SQLException: Access denied for user 'manifoldcf'@
> 'B'
> > (using password: YES)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
> >         at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
> >         at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
> >         at
> > com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
> >         at
> > com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
> >         at
> > com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
> >         at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
> >         at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
> >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >         at
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> >
> > The problem is that MCF requests MySQL to create a new "manifoldcf" user
> > with localhost access.
> > In this case, of course, MCF is on the server with IP B, MySQL should
> create
> > a new user with IP Address B.
> >
> > The following method is the one creating a new MySQL user in the user
> > table.
> > Modifying the part where IP information is added solves this problem.
> >
> >
> > JAR NAME   :mcf-core.jar
> > PACKAGE    :org.apache.manifoldcf.core.database
> > CLASS NAME :DBInterfaceMySQL
> > METHOD NAME: public void createUserAndDatabase
> >
> >             if(userName != null)
> >                 try
> >                 {
> >                     list.clear();
> >                     list.add(userName);
> >              //     list.add("localhost");
> >                     list.add(IP_ADDRESS_B);
> >                     list.add(password);
> > ...
> > ...
> > }
> >
> >
> > I guess it would be nice if properties.xml can have a new property taking
> > MCF server IP to
> > have MySQL create a "manifoldcf" user with that IP. What do you think?
> >
> >
> > Regards,
> >
> > Shigeki
> >
> >
>

Re: When running on MySQL initialize.sh causes access denied error

Posted by Karl Wright <da...@gmail.com>.
This sounds like a reasonable fix.

Would you be so kind as to create a ticket, and attach your proposed
change?  Adding a special property for mysql is also reasonable.

Karl

On Mon, May 21, 2012 at 5:34 AM, Shigeki Kobayashi
<sh...@g.softbank.co.jp> wrote:
>
> Hi guys.
>
> I suppose some pepole use multiple servers to create MCF-MySQL environtment.
> Well, I'm one of them but I found that initialize.sh causes access denied
> error if DB server is seperated from MCF's.
>
> Suppose each server's IP are like followings:
>
> MySQL Server IP: A
> MCF Server IP: B
>
> and properties.xml has the follwing parameters and values:
>
>  <property name="org.apache.manifoldcf.databaseimplementationclass"
> value="org.apache.manifoldcf.core.database.DBInterfaceMySQL"/>
>  <property name="org.apache.manifoldcf.dbsuperusername" value="root"/>
>  <property name="org.apache.manifoldcf.dbsuperuserpassword"
> value="<password>"/>
>  <property name="org.apache.manifoldcf.database.name" value="manifoldcf"/>
>  <property name="org.apache.manifoldcf.mysql.server" value="A"/>
>
> Then, executing initialize.sh causes the follwing error:
>
> Caused by: java.sql.SQLException: Access denied for user 'manifoldcf'@'B'
> (using password: YES)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
>         at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
>         at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
>         at
> com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
>         at
> com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
>         at
> com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
>         at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
>         at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>
> The problem is that MCF requests MySQL to create a new "manifoldcf" user
> with localhost access.
> In this case, of course, MCF is on the server with IP B, MySQL should create
> a new user with IP Address B.
>
> The following method is the one creating a new MySQL user in the user
> table.
> Modifying the part where IP information is added solves this problem.
>
>
> JAR NAME   :mcf-core.jar
> PACKAGE    :org.apache.manifoldcf.core.database
> CLASS NAME :DBInterfaceMySQL
> METHOD NAME: public void createUserAndDatabase
>
>             if(userName != null)
>                 try
>                 {
>                     list.clear();
>                     list.add(userName);
>              //     list.add("localhost");
>                     list.add(IP_ADDRESS_B);
>                     list.add(password);
> ...
> ...
> }
>
>
> I guess it would be nice if properties.xml can have a new property taking
> MCF server IP to
> have MySQL create a "manifoldcf" user with that IP. What do you think?
>
>
> Regards,
>
> Shigeki
>
>