Maison > base de données > tutoriel mysql > Comment supprimer l'utilisateur root dans MySQL

Comment supprimer l'utilisateur root dans MySQL

青灯夜游
Libérer: 2022-01-24 16:43:07
original
4540 Les gens l'ont consulté

Méthode MySQL pour supprimer l'utilisateur root : 1. Utilisez l'instruction "CREATE USER" pour créer un utilisateur avec les mêmes autorisations que l'utilisateur root ; 2. Utilisez l'instruction "drop user" pour supprimer l'utilisateur root, avec la syntaxe "DROP USER compte utilisateur root".

Comment supprimer l'utilisateur root dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Supprimer l'utilisateur root par défaut de MySQL

Analyse des exigences :

  • Le mot de passe root apparaît à de nombreux endroits, tels que les documents techniques partagés, les e-mails, les captures d'écran

  • L'administrateur de l'installation MySQL par défaut. le nom du compte est root, comme nous le savons tous. Afin d'améliorer la sécurité, vous devez modifier un nom d'utilisateur, tel que superutilisateur, ou un nom avec les caractéristiques de l'entreprise, par exemple, xxx_admin. créez un nom d'utilisateur avec les mêmes autorisations que l'utilisateur root User.

GRANT ALL PRIVILEGES ON *.* TO 'x_admin'@'127.0.0.1' IDENTIFIED BY 'xxxx';
Copier après la connexion

    Supprimez l'utilisateur root par défaut.
  • drop user root@'127.0.0.1';
    drop user root@'localhost';
    drop user root@'::1';
    Copier après la connexion
Compte utilisateur :
  • Le format est user_name'@'host_name.

    Le nom d'utilisateur ici est le nom d'utilisateur et le nom d'hôte est le nom d'hôte, qui est le nom de l'hôte utilisé par l'utilisateur pour se connecter à MySQL.
Si seul le nom d'utilisateur est donné sans spécifier le nom d'hôte lors du processus de création, le nom d'hôte est par défaut "%", ce qui signifie un groupe d'hôtes, c'est-à-dire que les autorisations sont ouvertes à tous les hôtes.

Attention :

1. Vue

Si vous utilisez le compte root comme vue de DEFINER, si vous supprimez root, vous serez informé que la vue ne peut pas être utilisée et n'a aucune autorisation. Vous devez donc y prêter attention. vérifiez à l'avance si la vue existe. Si elle existe, vous devez modifier l'attribut DEFINER de la vue.

Modifier la vue est une opération qui peut être effectuée en un instant, sauf si la vue est occupée par d'autres instructions SQL et. est dans un état verrouillé. Afficher la vue

select TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION, DEFINER from information_schema.VIEWS;
Copier après la connexion

Modifier la vue (non root temporaire Aucune modification)

ALTER DEFINER=`x_admin`@`127.0.0.1` SQL SECURITY DEFINER VIEW v_name AS...
Copier après la connexion

2. Procédures/fonctions stockées

La situation est similaire aux vues

Afficher les procédures/vues stockées.

select ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE,DEFINER from information_schema.ROUTINES;
Copier après la connexion

ou

select db,name,type,definer from mysql.proc;
Copier après la connexion

modifier les routines stockées, vous pouvez modifier directement mysql.proc

update mysql.proc set definer='x_admin@127.0.0.1'where db='db_name';
Copier après la connexion

Si vous modifiez toutes les bibliothèques

update mysql.proc set definer='x_admin@127.0.0.1';
Copier après la connexion

2. Utilisez l'utilisateur root pour vous connecter au script MySQL

Ce type de problème est plus facile à résoudre. Vous pouvez créer un compte distinct pour le script afin d'effectuer les opérations spécifiées dans le script. Le nom d'utilisateur peut être nommé script_, ou le nom du script. Les autorisations sont suffisantes. Utilisez-le simplement, n'attribuez pas trop d'autorisations

4. . Méthode : Un script pour ajouter des utilisateurs. (Coopérer avec l'exécution par lots)

#!/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 -h127.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()
Copier après la connexion
[Recommandations associées :

Tutoriel vidéo mysql

]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal