At line 1 changed 1 line. |
If you are having problems with the root user account accessing mysql and setting up the AppFuse database, the chances are the problem is one of three things: |
If you are having problems with the root user account accessing mysql and setting up |
the AppFuse database, the chances are you need to perform one of the following steps: |
At line 3 changed 3 lines. |
*You have specified a password for the root user (but not changed build.properties to specify it) |
*You do not have the grants setup correctly for the root user |
*You do not have the 'host' column in the mysql users table setup correctly |
!Table of Contents |
* [1] Set your mysql root user password in build.properties |
* [2] Your root account is not setup correctly |
* [3] The grants for the test user account are not being setup properly |
* [4] Set a password for your mysql root user |
At line 7 changed 1 line. |
The following describes how to re-initialising your root mysql account and ensuring things are setup correctly so ant setup runs smoothly. |
!!Set your mysql root user password in build.properties [#1] |
At line 9 changed 1 line. |
When you login to mysql there are a number of databases available to you. One of these databases is called mysql which is the 'system' database. Within the mysql database, there is a table called 'users' which holds all the mysql user information, along with their grants (their privileges). |
To set a password for your mysql root user, edit the build.properties file and edit |
these properties as neccesary: |
At line 11 removed 2 lines. |
If you are seeing an error message that says: |
|
At line 14 changed 1 line. |
Invalid authorization specification message from server: "Access denied for user: 'test@wl16lx1' (Using password: YES)" |
#database.jar=${postgresql.jar} |
#database.type=postgresql |
#database.name=appfuse |
#database.host=localhost |
#database URL for creating other databases (doesn't work with pgsql) |
#database.admin.url=jdbc:${database.type}://${database.host}/template1 |
#database.admin.username=postgres |
#database.admin.password=postgres |
|
#hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect |
#database.driver_class=org.postgresql.Driver |
#database.url=jdbc:${database.type}://${database.host}/${database.name} |
At line 17 changed 1 line. |
Then your problem is NOT the root account and you need to change metadata/sql/mysql-create.sql to specify your hostname (along with your domain name if you have one, else just your hostname). Below, I have given an example if your hostname is 'mypc': |
You should uncomment the password line to look like this: |
At line 20 changed 3 lines. |
create database if not exists appfuse; |
grant all privileges on appfuse.* to test@localhost identified by "test"; |
grant all privileges on appfuse.* to test@mypc identified by "test"; |
database.admin.password=myrootpassword |
At line 25 changed 1 line. |
Now, presuming it is the root account that you are getting errors with, here is how you reset the mysql DB to setup the root user with no password (to get you going with ant setup - you can add a root password after you have setup the appfuse DB). |
Where myrootpassword is your mysql root user password. |
At line 27 changed 1 line. |
In this example, we will pretend your hostname is 'mypc'. Also, where ${MYSQL_HOME} is shown, please replace that with the path to your mysql installation. At the end of these steps, you should be able to login to your mysql database and see this: |
!!Your root account is not setup correctly [#2] |
At line 29 changed 3 lines. |
$ mysql -u root |
mysql> use mysql; |
Database changed |
When you login to mysql there are a number of databases available to you. One of |
these databases is called mysql which is the 'system' database. Within the mysql |
database, there is a table called 'users' which holds all the mysql user information, |
along with their grants (their privileges). |
At line 33 changed 1 line. |
mysql> select user, host, password from user where user = "root"; |
The users table also contains a 'host' column. The root user needs a record entry |
in the users table for each 'host' it is going to login from. ie. 'mypc', 'localhost' |
and the wildcard '%'. |
At line 49 added 16 lines. |
Both the grants, and the host columns need to be setup correctly for ant setup to |
run smoothly. |
|
These instructions tell you how to setup the root user with no password. Once you |
have ant setup successfully, you can set a password on the root account. For further |
information, you may wish to check the [How to Reset the Root Password | http://dev.mysql.com/doc/mysql/en/resetting-permissions.html] section of the MySQL |
Reference Manual. |
|
(Please note: You do not have to setup the root account in this way, it is possible |
to perform the following steps and give the root user a password, see [1]. But |
the following steps should work for you.) |
|
In this example, we will pretend your hostname is 'mypc'. Also, where ${MYSQL_HOME} |
is shown, please replace that with the path to your mysql installation. At the end |
of these steps, you should be able to login to your mysql database and see this: |
|
At line 36 changed 8 lines. |
+------+-----------+----------+ |
| user | host | password | |
+------+-----------+----------+ |
| root | localhost | | |
| root | mypc | | |
| root | % | | |
+------+-----------+----------+ |
3 rows in set (0.00 sec) |
$ mysql -u root |
mysql> use mysql; |
Database changed |
|
mysql> select user, host, password from user where user = "root"; |
|
+------+-----------+----------+ |
| user | host | password | |
+------+-----------+----------+ |
| root | localhost | | |
| root | mypc | | |
| root | % | | |
+------+-----------+----------+ |
3 rows in set (0.00 sec) |
At line 46 changed 1 line. |
and if you execute select * from user where user = "root"; we want to see Y's on all the grant columns within the user table, which denotes that the root user has all the neccesary grant options to be able to setup the appfuse database and give the test user privileges on it. |
and if you execute select * from user where user = "root"; we want to see Y's |
on all the grant columns within the user table, which denotes that the root user |
has all the neccesary grant options to be able to setup the appfuse database and |
give the test user privileges on it. |
At line 51 changed 1 line. |
mysqladmin -u root -p shutdown |
mysqladmin -u root -p shutdown |
At line 54 changed 1 line. |
If mysql is still running (check the process on UNIX or use TaskManager on Windows), then kill the process: |
If mysql is still running (check the process on UNIX or use TaskManager on Windows), |
then kill the process: |
At line 57 changed 2 lines. |
(UNIX) killall mysqld |
(Windows) Use task manager or stop the mysqld service |
(UNIX) killall mysqld |
(Windows) Use task manager or stop the mysqld service |
At line 61 changed 1 line. |
Now we want to restart mysql but bypass the authentication tables so we can go in and change the user database table, so now execute this command (UNIX command given but for Windows, leaving out the ampersand): |
Now we want to restart mysql but bypass the authentication tables so we can go in |
and change the user database table, so now execute this command. For UNIX: |
At line 64 changed 1 line. |
${MYSQL_HOME}/bin/mysqld_safe --skip-grant-tables & |
${MYSQL_HOME}/bin/mysqld_safe --skip-grant-tables & |
At line 108 added 6 lines. |
For Windows, use the mysqld-nt command instead, also omit the ampersand: |
|
{{{ |
${MYSQL_HOME}\bin\mysqld-nt --skip-grant-tables |
}}} |
|
At line 69 changed 5 lines. |
mysql -u root |
use mysql; |
delete from user where user='root'; |
commit; |
FLUSH PRIVILEGES; |
mysql -u root |
use mysql; |
delete from user where user='root'; |
commit; |
FLUSH PRIVILEGES; |
At line 76 changed 1 line. |
Now we want to setup the root user using the GRANT command, so execute the following commands (Note you should change mypc to your hostname or hostname.domainname: |
Now we want to setup the root user using the GRANT command, so execute the |
following commands (Note you should change mypc to your hostname or hostname.domainname: |
At line 79 changed 9 lines. |
mysql -u root |
use mysql; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'mypc' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
quit; |
mysql -u root |
use mysql; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'mypc' WITH GRANT OPTION; |
FLUSH PRIVILEGES; |
quit; |
At line 90 changed 1 line. |
We now have the root user setup properly, lets restart mysql without bypassing the authentication stuff.. Stop mysql using the instructions above once more. Now, if you run ant setup you might be ok. If you are not, and you are getting error: |
Note: If you want to set a root password at this stage (and then specify it build.properties |
as defined in [1]), then you need to modify the GRANT commands to: |
{{{ |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION; |
}}} |
At line 145 added 12 lines. |
Replacing 'myrootpassword' to be what you want the mysql root user password to be. |
|
We now have the mysql root user setup properly, lets restart mysql without bypassing |
the authentication stuff.. Stop mysql using the instructions above once more. |
Now, if you run ant setup you should be ok, if you are still getting errors, |
it is likely you need to perform the steps in [3]. If you are up and running, |
you should not set the root password as described in [4]. |
|
!!The grants for the test user account are not being setup properly [#3] |
|
If you are seeing an error message that says: |
|
At line 93 changed 1 line. |
java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user: 'test@wl16lx1' (Using password: YES)" |
Invalid authorization specification message from server: |
"Access denied for user: 'test@mypc' (Using password: YES)" |
At line 95 removed 1 line. |
Then follow the instructions at the top of this page to sort out the problem.. |
At line 97 changed 1 line. |
Hopefully you are now up and running! |
Then you need to change metadata/sql/mysql-create.sql to specify your hostname |
(along with your domain name if you have one, else just your hostname). |
Here is an example of what a modified file might look like if your hostname is 'mypc': |
|
{{{ |
create database if not exists appfuse; |
grant all privileges on appfuse.* to test@localhost identified by "test"; |
grant all privileges on appfuse.* to test@mypc identified by "test"; |
}}} |
|
!!Set a password for your mysql root user [#4] |
|
To set the root password, type the following commands : |
|
{{{ |
$ mysql -u root |
mysql> use mysql; |
Database changed |
}}} |
|
Now we want to set the password field for any root user records in the users table. |
Type this command: |
|
{{{ |
UPDATE user SET Password=PASSWORD('myrootpassword') |
WHERE User='root'; |
|
FLUSH PRIVILEGES; |
}}} |
|
Where myrootpassword is your new mysql root user password. |
|
|