在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文实例讲述了Mysql账户管理原理与实现方法。分享给大家供大家参考,具体如下: 账户管理在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud 进行账户操作时,需要使用root账户登录,这个账户拥有最高的实例级权限 授予权限需要使用实例级账户登录后操作,以root为例 主要操作包括: 查看所有用户 1. 查看所有用户所有用户及权限信息存储在mysql数据库的user表中 select host,user,authentication_string from user; 结果 mysql> select host,user,authentication_string from user; +-----------+------------------+-------------------------------------------+ | host | user | authentication_string | +-----------+------------------+-------------------------------------------+ | localhost | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | debian-sys-maint | *EFED9C764966EDB33BB7318E1CBD122C0DFE4827 | +-----------+------------------+-------------------------------------------+ 3 rows in set (0.00 sec) 2. 创建账户、授权需要使用实例级账户登录后操作,以root为例 2.1 创建账户&授权grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码'; 2.2 示例1创建一个laowang的账号,密码为123456,只能通过本地访问, 并且只能对jing_dong数据库中的所有表进行读操作 step1:使用root登录 mysql -uroot -p 回车后写密码,然后回车 step2:创建账户并授予所有权限 grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456'; 说明 可以操作python数据库的所有表,方式为:jing_dong.* show grants for laowang@localhost; step3:退出root的登录 quit step4:使用laowang账户登录 mysql -ulaowang -p 回车后写密码,然后回车 登录后效果如下图 2.3 示例2创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对jing_dong数据库中的所有表拥有所有权限 grant all privileges on jing_dong.* to "laoli"@"%" identified by "12345678"
账户操作1. 修改权限grant 权限名称 on 数据库 to 账户@主机 with grant option;
2. 修改密码使用root登录,修改mysql数据库的user表 使用password()函数进行密码加密 update user set authentication_string=password('新密码') where user='用户名'; 例: update user set authentication_string=password('123') where user='laowang'; 注意修改完成后需要刷新权限 刷新权限:flush privileges 3. 远程登录(危险慎用)如果向在一个Ubuntu中使用msyql命令远程连接另外一台mysql服务器的话,通过以下方式即可完成,但是此方法仅仅了解就好了,不要在实际生产环境中使用 修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql restart 在另外一台Ubuntu中进行连接测试
通过 ping xxx.xxx.xx.xxx可以发现网络是否正常 2)查看数据库是否配置了bind_address参数 本地登录数据库查看my.cnf文件和数据库当前参数show variables like ‘bind_address'; 如果设置了bind_address=127.0.0.1 那么只能本地登录 3)查看数据库是否设置了skip_networking参数 如果设置了该参数,那么只能本地登录mysql数据库 4)端口指定是否正确 4. 删除账户语法1:使用root登录 drop user '用户名'@'主机'; 例: drop user 'laowang'@'%'; 语法2:使用root登录,删除mysql数据库的user表中数据 delete from user where user='用户名'; 例: delete from user where user='laowang'; -- 操作结束之后需要刷新权限 flush privileges 推荐使用语法1删除用户, 如果使用语法1删除失败,采用语法2方式 3. 忘记 root 账户密码怎么办 !!一般也轮不到我们来管理 root 账户,所以别瞎卖白粉的心了 忘记mysql root用户密码的解决办法(skip-grant-tables): skip-grant-tables 注意: 这种情况只有在忘记root密码 不得已重启数据库的情况下使用的。现网环境慎用,需要重启数据库,并且安全性也比较难以保证。 1.修改配置参数 /etc/my.cnf 在 [mysqld] 下面加上: skip-grant-tables 2.重启mysql 使得参数生效: service mysqld restart 3.注意事项 此时所有用户登录当前数据库都是免密码的,所以此时数据库的安全性是非常低的。 4.修改密码 具体的办法: https://www.ogeek.net/article/169143.htm 5.去掉参数 a.密码修改好了之后再将配置文件中 skip-grant-tables去掉 b.再次重启数据库。 更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》 希望本文所述对大家MySQL数据库计有所帮助。 |
请发表评论