置顶

Mysql 修改用户密码,权限操作

作者:andy.zhang | 分类:未分类 | 浏览:162 | 日期:2016年01月22日

1,修改用户密码,方法有很多,用自己觉得最好的。

        a,用管理员进入mysql

            mysql -u root -p  #-u后面可以直接跟root(用户),输入密码即可,linux下,命令不跟;

        b,更改当前数据库到mysql,注意后面跟;表示命令结束。

            use mysql;

        c,更改密码,username为需要更改密码的用户,username完整表达为“username@'机器名' ”

            mysql表示用户名有些特别。new_password是新密码,在括号内用单引号引起来。注意命令结尾的;

            set password for username=password('new_password');

        d,更新,还是要注意命令结尾的;

            flush  privileges;

        e,忘记root密码更改方法:

                1)在my.cnf里的[mysqld]里添加skip-grant-tables

                2)用mysql命令登陆,注意,只有这5个字符,不带其它东西。

                3)更改到mysql这个数据库use mysql

                4)使用update命令更改 update user set password=password('new_password') where user='root';

                5)成功后,使用flush privileges;刷新一下即可。

        f,mysql5.7版本又有不同了

                1,2,3步同上

                4)update user set authentication_string=password('123333') where user='root';

                   做完第4步,重启,把skip-grant-tables这条从配置文件里注了,到mysql里用use 

                更改一下数据库会出现需要你更改密码的提示,但由于5.7以上版本有密码复杂性机制,导致一般性的密码

                失效。一般需要有大小写字母,数字不能连着的等等。

                我一般是用set global validate_password_policy='low';命令把机制设置成低,这时变成了只有8位

                长度限制,那我一般设置的密码就没问题了。这个密码需要大家平时多多研究一下。 我自己用的就是

                三个左右。

                5)用set password=password('new_password');重设置一下密码即可正常使用

                6) 关于密码过期:

                  update user set password_expired='N' where user='root';


         g,mysql8.0:

              新装后,记一下随机密码。然后

              alter  user  ‘root'@'localhost' identified by 'your_password';

                

2 , 添加用户

    

2,提升用户权限

        a,首先了解数据库权限如:

            


权限

权限级别

权限说明

CREATE

数据库、表或索引

创建数据库、表或索引权限

DROP

数据库或表

删除数据库或表权限

GRANT OPTION

数据库、表或保存的程序

赋予权限选项

REFERENCES

数据库或表


ALTER

更改表,比如添加字段、索引等

DELETE

删除数据权限

INDEX

索引权限

INSERT

插入权限

SELECT

查询权限

UPDATE

更新权限

CREATE VIEW

视图

创建视图权限

SHOW VIEW

视图

查看视图权限

ALTER ROUTINE

存储过程

更改存储过程权限

CREATE ROUTINE

存储过程

创建存储过程权限

EXECUTE

存储过程

执行存储过程权限

FILE

服务器主机上的文件访问

文件访问权限

CREATE TEMPORARY TABLES

服务器管理

创建临时表权限

LOCK TABLES

服务器管理

锁表权限

CREATE USER

服务器管理

创建用户权限

PROCESS

服务器管理

查看进程权限

RELOAD

 

 

服务器管理

执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限

REPLICATION CLIENT

服务器管理

复制权限

REPLICATION SLAVE

服务器管理

复制权限

SHOW DATABASES

服务器管理

查看数据库权限

SHUTDOWN

服务器管理

关闭数据库权限

SUPER

服务器管理

执行kill线程权限


上表有些复杂,下面列出表的可能权限。



权限分布

可能的设置的权限

表权限

'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

列权限

'Select', 'Insert', 'Update', 'References'

过程权限

'Execute', 'Alter Routine', 'Grant'


    b,授予权限的原则:


            1)最小能用即可,例如用户只需要查看数据库则只级select,其它的update,delete等一律不给。

            2)机器限制,mysql用户后面要跟个机器名(IP),一般来说是给用户指定的机器访问的。一些远程用户需要用到%,

                  但是因为数据库重要,一般还是要求得到用户的远程地址。

            3)定期清理不用的用户,特别是密码为空的。

            4)密码强度,一直是管理员不可缺小的心得。一直建议三个月换密码的。

    c,实际操作:

            1)创建本地登陆的管理员(在mysql里命令大小写一样的)

              GRANT ALL PRIVILEGES ON *.* TO 'andy'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION

               以上命令把andy@localhost这个用户创建了,并授予了所有权限(all privileges),并且用户可以把自己的权限授予给其他人。这才是数据库系统的管理员。

            2)创建普通用户。说明,mysql用户由三部份组成分别是”用户名,@,主机“。

                grant all privileges on myblog.* to zxq@'%' identified by '123456' with grant option;

                以上命令创建了一个可以远程访问myblog数据库的数据库管理用户zxq,远程密码是123456

                其实grant是授予权限的命令,添加用户还有UPDATE命令,这个得看个人习惯,我一般是用grant即可创建用户也可对其授权。

                但要注意identified by 这是对远程用户授予远程密码用的,本地的localhost用户密码得用set password命令添加或更改。

发表评论

取消
微信二维码
微信二维码
支付宝二维码
点击关闭
  • 在线客服1