mysql数据库的超级管理员密码怎么修改


mysql数据库的超级管理员密码怎么修改mysql数据库的超级管理员名称是“root”。 在安装时会默认创建一个名为 root 的用户该用户拥有超级权限可以控制整个 MySQL 服务器。
  
  在对 MySQL 的日常管理和操作中为了避免有人恶意使用 root 用户控制数据库我们通常创建一些具有适当权限的用户尽可能地不用或少用 root 用户登录系统以此来确保数据的安全访问。
  
  一般root超级管理员的权限会比一般用户的权限大很多所以有些操作要root权限才能运行。
  

  root 用户拥有很高的权限不仅可以修改自己的密码还可以修改其他用户的密码。


  
  MySQL修改root密码
  
  在 MySQL 中root 用户拥有很高的权限因此必须保证 root 用户密码的安全。修改 root 用户密码的方式有很多种本节将介绍几种常用的修改 root 用户密码的方法。
  
  修改MySQL数据库的user表
  
  因为所有账户信息都保存在 user 表中因此可以直接通过修改 user 表来改变 root 用户的密码。
  
  root 用户登录到 MySQL 服务器后可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段从而修改用户的密码。
  
  使用 UPDATA 语句修改 root 用户密码的语法格式如下:
  
  UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
  
  新密码必须使用 PASSWORD() 函数来加密。执行UPDATE语句后需要执行FLUSH PRIVILEGES语句重新加载用户权限。
  
  使用SET语句修改root用户的密码
  
  SET PASSWORD 语句可以用来重新设置其他用户的登录密码或者自己使用的账户的密码。使用 SET 语句修改密码的语法结构如下:
  
  SET PASSWORD = PASSWORD ("rootpwd");
  
  MySQL root修改普通用户密码
  
  使用SET语句修改普通用户的密码
  
  在 MySQL 中只有 root 用户可以通过更新 MySQL 数据库来更改密码。使用 root 用户登录到 MySQL 服务器后可以使用 SET 语句来修改普通用户密码。语法格式如下:
  
  SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
  
  其中username 参数是普通用户的用户名hostname 参数是普通用户的主机名newpwd 是要更改的新密码。
  
  注意:新密码必须使用 PASSWORD() 函数来加密如果不使用 PASSWORD() 加密也会执行成功但是用户会无法登录。
  
  如果是普通用户修改密码可省略 FOR 子句来更改自己的密码。语法格式如下:
  
  SET PASSWORD = PASSWORD('newpwd');
  
  示例 1
  
  root 用户登录 MySQL 服务器后再使用 SET 语句将 testuser 用户的密码修改为“newpwd”SQL 语句和运行结果如下:
  
  mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd");
  
  Query OK, 0 rows affected, 1 warning (0.01 sec)
  
  由运行结果可以看出SET 语句执行成功testuser 用户的密码被成功设置为“newpwd”。
  
  使用UPDATE语句修改普通用户的密码
  
  使用 root 用户登录 MySQL 服务器后可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段从而修改普通用户的密码。UPDATA 语句的语法如下:
  
  UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";
  
  其中username 参数是普通用户的用户名hostname 参数是普通用户的主机名newpwd 是要更改的新密码。
  
  注意执行 UPDATE 语句后需要执行 FLUSH PRIVILEGES 语句重新加载用户权限。
  
  示例 3
  
  使用 root 用户登录 MySQL 服务器再使用 UPDATE 语句将 testuser 用户的密码修改为“newpwd2”的 SQL 语句和运行结果如下:
  
  mysql> UPDATE MySQL.user SET authentication_string = PASSWORD ("newpwd2")
  
  -> WHERE User = "testuser" AND Host = "localhost";
  
  Query OK, 1 row affected, 1 warning (0.07 sec)
  
  Rows matched: 1  Changed: 1  Warnings: 1
  
  mysql> FLUSH PRIVILEGES;
  
  Query OK, 0 rows affected (0.03 sec)
  
  由运行结果可以看出密码修改成功。testuser 的密码被修改成了 newpwd2。使用 FLUSH PRIVILEGES 重新加载权限后就可以使用新的密码登录 testuser 用户了。
  
  删除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 VIEW v_name AS...
  
  2、存储过程/函数
  
  情况与视图类似
  
  查看存储过程/视图
  
  select ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE,DEFINER from information_schema.ROUTINES;
  
  或者
  
  select db,name,type,definer from mysql.proc;
  
  修改存储例程,可直接修改mysql.proc
  
  update mysql.proc set definer='x_admin@127.0.0.1'where 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
  
  import socket
  
  import 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')
  
  if config.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 in conn_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:
  
  print str(e)
  
  traceback.print_exc()
  
  sys.exit()

上一篇:reactnavigation报错如何解决

下一篇:react+maxlength不生效如何解决


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器