国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql刪除root用戶的方法是什么

2024-07-24 12:33:35
字體:
供稿:網(wǎng)友
  本文小編為大家詳細介紹“mysql刪除root用戶的方法是什么”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“mysql刪除root用戶的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
  
  mysql刪除root用戶的方法:1、使用“CREATE USER”語句創(chuàng)建一個與root用戶權(quán)限一樣的用戶;2、使用“drop user”語句刪除root用戶,語法“DROP USER root用戶賬號”。
 
  本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
 
  刪除MySQL的默認root用戶
 
  需求分析:
 
  root密碼在多個地方出現(xiàn)過,比如分享的技術(shù)文檔,郵件,截圖.
  MySQL默認安裝的管理員帳號名稱root,眾所周知.為了增強安全性,需要更換一個用戶名稱,例如換成superuser,或者有公司特色的.例如xxx_admin.
  應(yīng)對策略:
 
  首先創(chuàng)建一個與root用戶權(quán)限一樣的用戶.
  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 時所用主機的名字。
 
  如果在創(chuàng)建的過程中,只給出了用戶名,而沒指定主機名,那么主機名默認為“%”,表示一組主機,即對所有主機開放權(quán)限。
 
  注意問題:
 
  1、視圖
 
  曾經(jīng)用root帳號為DEFINER的視圖,如果將root刪除,將提示該視圖無法使用,沒有權(quán)限.所以要注意提前查看是否存在視圖,存在的話,需要修改該視圖的DEFINER屬性.
 
  修改視圖,是瞬間就能完成的操作,除非該視圖被其他sql語句占用,處于鎖定的狀態(tài).
 
  查看視圖
 
  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、存儲過程/函數(shù)
 
  情況與視圖類似
 
  查看存儲過程/視圖
 
  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的腳本
 
  此類問題比較好解決,可單獨為腳本創(chuàng)建帳號用來執(zhí)行腳本中指定的操作,該用戶名可用script_,或者腳本名命名.權(quán)限夠用就行,不要分配過多的權(quán)限.
 
  4、方法:一個增加用戶的腳本.(配合批量執(zhí)行)
 
  #!/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()
  讀到這里,這篇“mysql刪除root用戶的方法是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會。

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北辰区| 新绛县| 沧州市| 崇信县| 临湘市| 天柱县| 长泰县| 历史| 兴安县| 贵德县| 青田县| 磐安县| 祁东县| 东城区| 五台县| 平遥县| 固原市| 治多县| 定远县| 七台河市| 芷江| 万山特区| 九龙县| 平昌县| 洛宁县| 横山县| 井研县| 新河县| 汕头市| 白银市| 乃东县| 德州市| 灵宝市| 陇西县| 秦安县| 齐齐哈尔市| 铜山县| 上饶县| 黄山市| 渝北区| 安新县|