分享

mysql用户和权限管理

 beidouxingstar 2015-07-15
账号(用来实现认证)
    用户:访问mysql服务器的,跟操作系统的用户没什么关系
    密码:默认使用password()函数来进行加密
权限:用户只有给予权限才可以对mysql进行登录和操作
表:
    user:用户账号、全局权限
    db:库级别
    host:已经废弃,不用了
    tables_priv:表级别权限
    colum_priv:列级别权限
    procs_priv:存储过程和存储函数相关的权限
    proxies_priv:代理用户权限
mysql用户账号:
    用户名@主机
        用户:16字符以内
        主机:主机名(www.xxx.xom
                    ip:具体的单个ip地址
                    网络地址:192.168.4.0/255.255.255.0
                    通配符:%
权限级别:
    全局级别
    库级别
    表级别
    列级别
    存储过程和存储函数

创建的是临时表,也叫内存表,读取速度快,不需要永久保存,默认最大为16M,叫堆内存
触发器,用来完成主动数据库的创建的,当我们执行INSERT,DELETE,UPDATE等句子的时候,它可以自动触发另外的操作,这些被触发的另外操作是我们按照自己需要自己定义的。
创建数据库用户:

    一、CREATE USER http:///mailto:username@host [IDENTIFIED BY]  'password';
    二、GRANT
    三、mysql>INSERT INTO mysql.user ...........;
           mysql>FLUSH PRIVILEGES;
SHOW GRANT FOR user@host;
给mysql数据库用户授权:

GRANT ALL PRIVILEGES ON [object_type] db.* TO username@'%';
object_type:
    TABLE| FUNCTION | PROCEDURE
(数据库点后面的既可以是表也可以是存储函数,有时候需要指定是表还是存储函数的时候就需要指定object_type是TABLE还是FUNCTION或是PROCEDURE)

删除数据库用户:

DROP USER 'user_name'@'host';

给数据库用户重命名:

撤销用户权限:


例如:收回用户的SELECT权限


要是我们突然把myql用户的管理员密码忘了,肿么办呢?当然是要找回来喽,哈哈哈
1、首先,要先把mysql服务关掉:
2、其次,手动启动mysql:
    编辑/etc/init.d/mysqld文件
    vim /etc/init.d/mysqld

3、然后我们启动mysql服务:
   
4、连接mysql:
   

这一次,虽然用户都是有密码的,但是我们直接命令行输入msyql就直接进入了数据库,而且是不需要密码的噢。但是这样并不算完,我们还需要重新修改mysql的管理员密码。
5、修改mysql管理员用户密码

是不是有点失望,因为我们使用了--skip-grant-tables选项后,使用SET PASSWORD这种方式来改mysql管理员的密码就不好使喽。。。。。。。。。。。。。不过不要灰心,我们还是有方法的哈,那就是手动去修改mysql.user文件中的对应字段,就是使用update指令通过更新授权表方式直接修改其密码:

我们测试的是把root对应的localhost密码改成了66666,我们来试一下密码更改是否成功
6、我们需要把/etc/init.d/mysqld文件中添加的字段去掉噢:

好了,我们删掉了我们添加的字段
重启mysql服务:

连接mysql服务器:

哈哈,我们使用新密码‘666666’连接上了mysql噢,这样我们就搞定了忘记密码的问题了。
需要注意的是我们在/etc/init.d/mysqld文件中添加的那2个字段:
    --skip-grant-tables(跳过授权表,登录mysql就不需要密码了)
    --skip-networking(防止他人从网络连接msyql,这样做是为了安全,因为使用了--skip-grant-tables这一项后数据库就不需要密码也可以连接了。但是这样我们也只能从本地进行登录msyql喽)
我们测试的时候都是直接关掉数据库或是直接重启数据库的,但是生产环境中的数据库是不可以随便停掉,或是随变重启动的,最好是reload,重新载入一下的好哈。


貌似这样也可以:
1./etc/my.cf 在mysqld段添加 skip-grant-tables  重启数据库,即可无密码登陆
[mysqld]
skip-grant-tables
2.更改密码
mysql>use mysql
mysql> update user set password=password("redhat") where user="root";
3.删除,之前添加的内容 skip-grant-tables
4.重启mysql 即可正常使用






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多