none
usuario con privilegios de crear otros usuarios!!

    Question

  • Hola amigos, le traigo una consulta, cuando me logeo con el usuario SA, puedo crear otros usuarios con los privilegios que quiera, apartir de esta he creado un usuario con privilegio OWNER, todo ok, pero al logearme con este usuario con dicho privilegio, al querer crear otro usuario no puedo hacerlo porque me dice que no poseo los privilegios suficientes para poder crearlos. Que tipor de usuario debo crear para poder tener el privilegio de crear usuarios con los privilegios que quiera. Estoy utilizando SQL SERVER 2000 con VB:NET 2003

    gracias por su tiempo

    saludos

    Friday, March 15, 2013 11:59 PM

Answers

  • Creo que uno de tus problemas es que aún no has captado que para que alguien acceda a una base de datos necesita tener DOS usuarios: a) Hace falta un Inicio de Sesión (que se llama LOGIN en la versión inglesa), que le permite conectarse al servidor SQL, pero no necesariamente le permite acceder a ninguna base de datos en ese servidor. b) Hace falta tener un Usuario de base de datos (que se llama USER en inglés), que le permite acceder a una base de datos concreta. Es bastante común crear un USER con el mismo nombre que el LOGIN y "conectar" uno con el otro, de forma que al acceder al sistema mediante el Login se accede también a la base de datos en la que existe el User que se llama igual que el Login. Pero no tendría necesariamente por qué ser así; podría haber un Login que se llame "José" mapeado a un User en una base de datos que se llame "Pepe" y a otro User en otra base de datos que se llame "abcd". Las dos cosas, el User y el Login, se crean por separado y se necesitan los dos para que alguien pueda acceder a la base de datos.

    Procedimientos que necesitas:

    - sp_addlogin: crea el LOGIN (pero no crea un USER). Quien ejecute este comando requiere permisos de ALTER ANY LOGIN.

    - sp_grantDBaccess: crea un USER en una base de datos concreta, y lo mapea con un LOGIN. Si no le das ningún nombre para el User, emplea el mismo nombre del Login. La persona que haga esto tiene que tener en esa base de datos el rol db_owner o db_accessadmin.

    - El USER que has creado, en prinipio sólo tiene los permisos que en la base de datos se hayan asignado al rol PUBLIC. Si con eso no te basta, puedes darle más permisos con el comando GRANT, o haciéndole miembro de un rol en esa base de datos (con sp_addrolemember). La persona que haga esto tiene que tener en esa base de datos el rol db_owner o db_accessadmin.

    En cuanto a lo de asignar un rol de servidor: Se usa el procedimiento sp_addsrvrolemember. Quien ejecute este comando tiene que ser ya miembro del rol al que se añade el nuevo Login.

    Sunday, March 17, 2013 6:57 AM

All replies

  • Cuando dices "crear usuarios", ¿te refieres a Inicios de Sesión o a usuarios dentro de una base de datos concreta? Lo digo porque los permisos necesarios son diferentes. Si son usuarios dentro de una BD, y al que tiene que crearlos le has hecho dbo, entonces sí que debería tener permisos suficientes para hacerlo. Pero si es para crear inicios de sesión, el que deba hacerlo tendría que tener el permiso ALTER ANY LOGIN sobre el servidor.

    Saturday, March 16, 2013 8:21 AM
  • Hola Albert, mi drama es que no estoy captando bien aun esta parte.:

    Mi idea es crear usuarios, con los que me logeo para poder trabajar sobre la base de datos, crear un usuario que pueda tener privilegios para crear otros usuarios con diferentes privilegios, pero que ese usuario en particular sea el que maneje todo. Lo que no me queda bien en claro es como debo proceder para crear, porque seguin lei, asi como mencionaste debo crear uno para el logeo y para operar sobre la BBDD. Mi intencion es crear el usuario, con ese usuario logearme y con el mismo para trabajar sobre la base de datos.

    Me podrian ayudar como hacerlo porque no tengo bien en claro como es que debo hacer.

    saludos

    Saturday, March 16, 2013 7:53 PM
  • hola, segun lo que he leido, mas o menos me despeje, pero les hago la consulta a ustedes que son los expertos.

    primero: creo un inicio de sesion utilizando el sp_addlogin

    segundo: hago que estos usuarios se agreguen a la bbdd con el sp_grantDBaccess

    tercero:  le asigno un rol a ese usuario creado con el sp_addrolmember

    lo que quiero aclarar, cual es la diferencia entre sp_grantDBaccess y sp_adduser,

    ademas al crear mi inicio de sesion, como puedo asignarle un tipo de rol a nivel servidor, alguien sabe como se llama el procedimiento??

    saludos

    Saturday, March 16, 2013 10:31 PM
  • Creo que uno de tus problemas es que aún no has captado que para que alguien acceda a una base de datos necesita tener DOS usuarios: a) Hace falta un Inicio de Sesión (que se llama LOGIN en la versión inglesa), que le permite conectarse al servidor SQL, pero no necesariamente le permite acceder a ninguna base de datos en ese servidor. b) Hace falta tener un Usuario de base de datos (que se llama USER en inglés), que le permite acceder a una base de datos concreta. Es bastante común crear un USER con el mismo nombre que el LOGIN y "conectar" uno con el otro, de forma que al acceder al sistema mediante el Login se accede también a la base de datos en la que existe el User que se llama igual que el Login. Pero no tendría necesariamente por qué ser así; podría haber un Login que se llame "José" mapeado a un User en una base de datos que se llame "Pepe" y a otro User en otra base de datos que se llame "abcd". Las dos cosas, el User y el Login, se crean por separado y se necesitan los dos para que alguien pueda acceder a la base de datos.

    Procedimientos que necesitas:

    - sp_addlogin: crea el LOGIN (pero no crea un USER). Quien ejecute este comando requiere permisos de ALTER ANY LOGIN.

    - sp_grantDBaccess: crea un USER en una base de datos concreta, y lo mapea con un LOGIN. Si no le das ningún nombre para el User, emplea el mismo nombre del Login. La persona que haga esto tiene que tener en esa base de datos el rol db_owner o db_accessadmin.

    - El USER que has creado, en prinipio sólo tiene los permisos que en la base de datos se hayan asignado al rol PUBLIC. Si con eso no te basta, puedes darle más permisos con el comando GRANT, o haciéndole miembro de un rol en esa base de datos (con sp_addrolemember). La persona que haga esto tiene que tener en esa base de datos el rol db_owner o db_accessadmin.

    En cuanto a lo de asignar un rol de servidor: Se usa el procedimiento sp_addsrvrolemember. Quien ejecute este comando tiene que ser ya miembro del rol al que se añade el nuevo Login.

    Sunday, March 17, 2013 6:57 AM