洞察提升小程序标签管理,实现高效的金融行业数字化转型
373
2023-11-27
本文小编为大家详细介绍“mysql删除root用户的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql删除root用户的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
mysql删除root用户的方法:1、使用“CREATE USER”语句创建一个与root用户权限一样的用户;2、使用“drop user”语句删除root用户,语法“DROP USER root用户账号”。
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
删除MySQL的默认root用户
需求分析:
root密码在多个地方出现过,比如分享的技术文档,邮件,截图.
MySQL默认安装的管理员帐号名称root,众所周知.为了增强安全性,需要更换一个用户名称,例如换成superuser,或者有公司特色的.例如xxx_admin.
应对策略:
首先创建一个与root用户权限一样的用户.
GRANT ALL PRIVILEGES ON *.* TO x_admin@127.0.0.1 IDENTIFIED BY xxxx;删除默认的root用户.
drop user root@127.0.0.1; drop user root@localhost; drop user root@::1;用户账号:
格式为 user_name@host_name。
这里的user_name是用户名,host_name为主机名,即用户连接 MySQL 时所用主机的名字。
如果在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限。
注意问题:
1、视图
曾经用root帐号为DEFINER的视图,如果将root删除,将提示该视图无法使用,没有权限.所以要注意提前查看是否存在视图,存在的话,需要修改该视图的DEFINER属性.
修改视图,是瞬间就能完成的操作,除非该视图被其他sql语句占用,处于锁定的状态.
查看视图
select TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION, DEFINER from information_schema.VIEWS;修改视图(非root的暂不修改)
ALTER DEFINER=`x_admin`@`127.0.0.1` SQL SECURITY DEFINER VIEWv_name AS...2、存储过程/函数
情况与视图类似
查看存储过程/视图
select ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE,DEFINER frominformation_schema.ROUTINES;或者
select db,name,type,definer from mysql.proc;修改存储例程,可直接修改mysql.proc
updatemysql.procset definer=x_admin@127.0.0.1where db=db_name;如果修改所有库
update mysql.proc set definer=x_admin@127.0.0.1;2、用root用户连接MySQL的脚本
此类问题比较好解决,可单独为脚本创建帐号用来执行脚本中指定的操作,该用户名可用script_,或者脚本名命名.权限够用就行,不要分配过多的权限.
4、方法:一个增加用户的脚本.(配合批量执行)
#!/usr/bin/python #-*- coding: UTF-8 -*- # ######################################################################## # This program # Version: 2.0.0 (2012-10-10) # Authors: lianjie.ning@qunar.com # History: # ######################################################################## import os importsocketimport subprocess import sys import traceback from ConfigParser import ConfigParser class Finger(object): finger.py def __init__ (self): print ---- %s, %s % (socket.gethostname(), self.__doc__) def load_config (self, file="finger.ini"): if not os.path.exists(file): print file,"is not exists, but is created, please fix it" temp_ini = [conn_db] login_pwd = exec_sql = open(file, w).write(temp_ini) os.chmod(file,0600) sys.exit() config = ConfigParser() config.read(file)if config.has_section(conn_db) is True: if config.has_option(conn_db, login_pwd) is True: login_pwd = config.get(conn_db, login_pwd) ifconfig.has_option(conn_db, exec_sql) is True: exec_sql = config.get(conn_db, exec_sql) return(login_pwd, exec_sql)def grant_user(self, login_pwd, exec_sql): if os.path.exists(/usr/local/bin/mysql): mysql =/usr/local/bin/mysql elif os.path.exists(/usr/bin/mysql): mysql =/usr/bin/mysql elif os.path.exists(/bin/mysql): mysql = /bin/mysql else: print "command not fount of mysql" sys.exit() user = xxxx conn_port = [3306,3307,3308,3309,3310] for i inconn_port: ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM) address = (127.0.0.1, int(i)) status = ss.connect_ex(address) ss.settimeout(3) ss.close() if status == 0: conn_mysql =%s -u%s -p%s -h227.0.0.1 -P%d -N -s -e"%s"% (mysql, user, login_pwd, i, exec_sql) p = subprocess.call(conn_mysql, shell=True, stdout=open("/dev/null")) if p == 0: print "---- checking port: %s is NORMAL" % i else: print "---- checking prot: %s is ERROR" % i if __name__ == __main__: try: process = Finger() (login_pwd, exec_sql) = process.load_config() process.grant_user(login_pwd, exec_sql)except Exception, e: printstr(e) traceback.print_exc() sys.exit()读到这里,这篇“mysql删除root用户的方法是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~