It always helpd me to change MySQL's "user" to connection in my head when I begin to think about access control. Then in most database designs that I have seen, row access control is just as important as database/table/column. Then the question becomes does the "user" have direct access to the database or is there an intervening filter [application code].
Now on a development environment I typically group the developers {i.e. roles} and let each "user" {person} in a group use a common connection. Even then the # of connections has to be small and relatively generic {Select on these 20 tables, Select/ Update on these 45 tables, Select/ Insert/ Update/ Delete on these 5 tables}. I have yet to find the DBA that can define unique MySQL "users" for 500 people. In an "Accountiing" environment I still will have groups/roles but much of the identification/enforcement will be done through a combination of application code and the use of specific database connections. This way I can enforce things like population of last changed by and timestamp fields, application navigation recording as well as row level access control. {i.e. I should only be able to see my own employee data or some parts of the data for people reporting to me.} Direct access via SQL would be extremely limited. -----Original Message----- From: Danny Stolle [mailto:[EMAIL PROTECTED] Sent: Tuesday, June 14, 2005 2:05 PM To: [EMAIL PROTECTED]; mysql@lists.mysql.com Subject: Re: discuss: user management Hi Kevin, i started this discussion to find out, how most database administrators or users involved in managing MySql, would deal with a topic as User Management. So the question(s) is(are) more hypothetical, e.g. "What if (...) 'you would have a development site and an accounting site'" how would you plan your user management? I like the way you state your opinion on User Management and the examples you give. It is not so that i would stick on these options, if there are other ideas, please let us discuss them. but if you have given some examples, i would like to give an example on the 3th option: it is not so that you have to create a user with these prefixes (_dev, _arch); why not having departmentnames as userID's or perhaps fantasynames as userID's (which could be uses as role names). your question on the role-part: 'why would somebody create roles?' is an interesting question. i have no direct answer to this question. the only thing i would come up with is: when you have a lot of tables and you have to change a privilege on several tables. you have the choice for changing that for 40 users each or 5 roles each. Best Regards, Danny Stolle EmoeSoft, Netherlands Kevin Struckhoff wrote: > Danny, > > I would stay away from option 3 for exactly the example you provided. > You have 1 user with 2 roles. What if you had 30 users with 2 roles? I > would choose option 2 because I would only have to maintain 2 users in > MySQL, not 60 as you would in option 3. For option 1, you would have 30 > users, but then you would to give them the 'most permissible' privileges > of the 2 roles. > > What I don't know is why you need to have roles in the first place. Do > you have a large number of users and a large number of roles? > > Kevin Struckhoff > Customer Analytics Mgr. > NewRoads West > > Office 818.253.3819 Fax 818.834.8843 > [EMAIL PROTECTED] > > > -----Original Message----- > From: Danny Stolle [mailto:[EMAIL PROTECTED] > Sent: Tuesday, June 14, 2005 11:12 AM > To: [EMAIL PROTECTED]; mysql@lists.mysql.com > Subject: Re: discuss: user management > > Hi Kevin, > > yes it is a complex matter, i agree completely. but how would you plan > this as a dba or the person involved on administrating MySql. For > instance: You would choose option 2 as the preferable one. But what > would you do if somebody would change its role or that the person would > get other privileges? he will get a new or already created role userID, > but would still be able to logon using the previous user id. > > why wouldn't you choose for the 3th option or 1st option? what > disadvantages do you think would option 1 and 3 have? > > Best regards, > > Danny Stolle > EmoeSoft, Netherlands > > > > Kevin Struckhoff wrote: > >>Danny, >> >>Although my experience with MySQL user management is limited to just >>maintaining a handful of users, I find it rather overly-complex > > because > >>of the need to maintain a table of users and 'from where' they can > > have > >>access, and to what databases they can have access to. For example, I >>just installed MySQL Administrator on my laptop and then I had to add >>rows allowing me to access MySQL from my laptop. The ODBC connection >>setup should suffice. For every instance of MySQL, you have to have an >>entry in the user table for every user from every access point. Then >>multiply that by the number of databases in each instance and you can >>see that administration of the users can get out of hand. >> >>If I had to choose between the 3 methods listed below, I would choose > > #2 > >>if there was a large number of roles and users. I would definitely > > stay > >>away from option #3 no matter what. HTH. >> >>Kevin Struckhoff >>Customer Analytics Mgr. >>NewRoads West >> >>Office 818.253.3819 Fax 818.834.8843 >>[EMAIL PROTECTED] >> >> >>-----Original Message----- >>From: Danny Stolle [mailto:[EMAIL PROTECTED] >>Sent: Tuesday, June 14, 2005 10:08 AM >>To: mysql@lists.mysql.com >>Subject: [SPAM] - discuss: user management - Bayesian Filter detected >>spam >> >>hi, >> >>i would like to discuss 'user management' in mysql. Working with > > Oracle > >>you can assign users to roles giving them privileges provided by that >>role. MySql doesn't have Roles. I have read (Managing and Using MySql, > > >>O'Reilly) 3 options on managing users having multiple roles in a MySql > > >>environment: >>1. Giving the user a Single user ID and assign the privileges to that >>user ID >>2. Create role-bases users and have different people share the same > > user > >>ID for a given role. >>3. Create multiple user IDs for each role played by each user >>(dannys_arch as an architect, dannys_dev as a developer). >> >>Which of these 3 options is the most preferable one or are there more >>options which you can use. What are the advantages and disadvantages > > on > >>working with one of these 3 options? how do you handle hostnames when >>working with random ip-addresses on your site. >> >>Or just plain simple (or stupid) what are your experiences on user >>management in a MySql environment. >> >>Best regards, >> >>Danny Stolle >>Netherlands >> > > > > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]