Hello.
MySQL 4.1.0 is not respecting the registered privileges.
Before I switch back to the last stable version, I would like to know if
there is a workaround to my problem or if other persons have met the
same problems. Following is the description of the troubles.
I have installed MySQL 4.1.0-alpha-standard on Linux (RH 7.3 and RH 9).
I installed it from scratch using the MySQL tarball. After the installation,
I transfered by 'tar' the 4.03 databases (MyISAM and InnoDB) into the
'data' directory of MySQL4.1. I didn't transfer the MySQL privileges
database mysql (mysql.user, mysql.db, etc)'. So I am working with the
privileges 'format' of 4.1 and mysql_fix_privilege_tables is not needed.
I use MySQL 4.1 because of the subselect feature.
I have 7 databases and 2 users plus root. For each database, I grant
all privileges to the user for all host ('%'). Each user always use the same
password for all the databases.
"show databases" displays an incorrect list of databases. Each user lists a
database it should not, and doesn't show all the databases it should.
Same thing with 'use ' : the access is denied for some databases
for which the user s granted 'all privileges'.
An example from the client:
===
[EMAIL PROTECTED]<64> mysql -p -u archive -h dbserver
Enter password:
mysql> select user();
+---+
| user()|
+---+
| [EMAIL PROTECTED] |
+---+
mysql> show grants for archive;
| Grants for [EMAIL PROTECTED]
...
GRANT USAGE ON *.* TO 'archive'@'%' IDENTIFIED BY PASSWORD '*blabla...'
| GRANT ALL PRIVILEGES ON `dbancien`.* TO 'archive'@'%'
| GRANT ALL PRIVILEGES ON `dbrecent2`.* TO 'archive'@'%'
| GRANT ALL PRIVILEGES ON `dbcourant`.* TO 'archive'@'%'
| GRANT ALL PRIVILEGES ON `dbcourant`.* TO 'archive'@'%'
mysql> use cctest
Database changed ==> should not be possible (should not work) !
mysql> use dbcourant ==> works according to the privileges
Database changed
mysql> use dbancien
ERROR 1044: Access denied for user: '[EMAIL PROTECTED]' to database 'dbancien'
==> should work, because all privileges are granted
mysql> show databases;
+---+
| Database |
+---+
| cctest| ===> 'dbancien' should be displayed instead of cctest
| dbcourant |
| dbrecent1 |
| dbrecent2 |
+---+
On the server now:
==
Following are some coloumns of the defined privileges :
[EMAIL PROTECTED] data]# mysql -p -u root
Enter password:
mysql> select version();
+--+
| version()|
+--+
| 4.1.0-alpha-standard |
+--+
1 row in set (0.00 sec)
mysql> use mysql
mysql> select user,host from user;
+-+---+
| user| host |
+-+---+
| archive | % |
| ccsql | % |
| root| dbserver |
| root| localhost |
+-+---+
4 rows in set (0.00 sec)
mysql> select user,host,db from db;
+-+--++
| user| host | db |
+-+--++
| ccsql | %| cctandem |
| ccsql | %| cctandemOnline |
| ccsql | %| cctest |
| archive | %| dbancien |
| archive | %| dbcourant |
| archive | %| dbrecent1 |
| archive | %| dbrecent2 |
+-+--++
7 rows in set (0.00 sec)
Any idea ?
Thanks in advance.
Christophe.
--
***
Christophe DIARRA
Institut de Physique Nucleaire
15, Rue Georges Clemenceau
Bat 102 - S2I
91406 ORSAY Cedex
Tel: (33) 1 69 15 65 60
Fax: (33) 1 69 15 64 70
E-mail: [EMAIL PROTECTED]
***
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]