Maison > base de données > tutoriel mysql > le corps du texte

Quel est le nom du super administrateur de la base de données MySQL ?

青灯夜游
Libérer: 2023-01-06 15:42:12
original
5043 Les gens l'ont consulté

Le nom du super-administrateur de la base de données MySQL est "root". Lorsque MySQL est installé, un utilisateur nommé root sera créé par défaut. Cet utilisateur dispose de super autorisations et peut contrôler l'ensemble du serveur MySQL. L'utilisateur root dispose d'autorisations très élevées et peut non seulement modifier son propre mot de passe, mais également modifier les mots de passe des autres utilisateurs.

Quel est le nom du super administrateur de la base de données MySQL ?

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

Le nom du super administrateur de la base de données MySQL est "root".

Lorsque MySQL est installé, un utilisateur nommé root sera créé par défaut. Cet utilisateur dispose de super privilèges et peut contrôler l'ensemble du serveur MySQL.

Dans la gestion et le fonctionnement quotidiens de MySQL, afin d'empêcher quelqu'un d'utiliser de manière malveillante l'utilisateur root pour contrôler la base de données, nous créons généralement des utilisateurs avec les autorisations appropriées et utilisons le moins possible l'utilisateur root pour se connecter. au système pour assurer la sécurité des données.

En général, les autorisations des super-administrateurs root sont bien supérieures à celles des utilisateurs ordinaires, donc certaines opérations nécessitent des autorisations root pour s'exécuter.

L'utilisateur root dispose d'autorisations très élevées et peut non seulement modifier son propre mot de passe, mais également les mots de passe des autres utilisateurs.

MySQL change le mot de passe root

Dans MySQL, l'utilisateur root dispose d'autorisations très élevées, la sécurité du mot de passe de l'utilisateur root doit donc être assurée. Il existe de nombreuses façons de modifier le mot de passe de l'utilisateur root. Cette section présentera plusieurs méthodes couramment utilisées pour modifier le mot de passe de l'utilisateur root.

  • Modifier la table utilisateur de la base de données MySQL

Étant donné que toutes les informations de compte sont stockées dans la table utilisateur, vous pouvez changer le mot de passe de l'utilisateur root directement en modifiant la table utilisateur.

Une fois que l'utilisateur root s'est connecté au serveur MySQL, vous pouvez utiliser l'instruction UPDATE pour modifier le champ Authentication_string de la table utilisateur de la base de données MySQL afin de modifier le mot de passe de l'utilisateur.

Le format de syntaxe pour utiliser l'instruction UPDATA pour modifier le mot de passe de l'utilisateur root est le suivant :

UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
Copier après la connexion

Le nouveau mot de passe doit être crypté à l'aide de la fonction PASSWORD(). Après avoir exécuté l'instruction UPDATE, vous devez exécuter l'instruction FLUSH PRIVILEGES pour recharger les autorisations utilisateur.

  • Utilisez l'instruction SET pour changer le mot de passe de l'utilisateur root

L'instruction SET PASSWORD peut être utilisée pour réinitialiser le mot de passe de connexion d'autres utilisateurs ou le mot de passe du compte que vous utilisez. La structure syntaxique de l'utilisation de l'instruction SET pour changer le mot de passe est la suivante :

SET PASSWORD = PASSWORD ("rootpwd");
Copier après la connexion

La racine MySQL modifie le mot de passe d'un utilisateur ordinaire

  • Utilisation de l'instruction SET pour changer le mot de passe d'un utilisateur ordinaire

Dans MySQL, seul l'utilisateur root peut mettre à jour le mot de passe de modification de la base de données MySQL. Après vous être connecté au serveur MySQL en tant qu'utilisateur root, vous pouvez utiliser l'instruction SET pour modifier le mot de passe de l'utilisateur ordinaire. Le format de syntaxe est le suivant :

SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
Copier après la connexion

Parmi eux, le paramètre username est le nom d'utilisateur d'un utilisateur ordinaire, le paramètre hostname est le nom d'hôte d'un utilisateur ordinaire et newpwd est le nouveau mot de passe à modifier.

Remarque : Le nouveau mot de passe doit être crypté à l'aide de la fonction PASSWORD(). S'il n'est pas crypté à l'aide de PASSWORD(), il sera exécuté avec succès, mais l'utilisateur ne pourra pas se connecter.

Si un utilisateur ordinaire modifie son mot de passe, il peut omettre la clause FOR pour changer son mot de passe. Le format de syntaxe est le suivant :

SET PASSWORD = PASSWORD('newpwd');
Copier après la connexion

Exemple 1

Une fois que l'utilisateur root s'est connecté au serveur MySQL, utilisez l'instruction SET pour changer le mot de passe de l'utilisateur testuser en "newpwd". suit :

mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd");
Query OK, 0 rows affected, 1 warning (0.01 sec)
Copier après la connexion

Comme le montrent les résultats en cours d'exécution, l'instruction SET est exécutée avec succès et le mot de passe de l'utilisateur testuser est défini avec succès sur "newpwd".

  • Utilisez l'instruction UPDATE pour changer le mot de passe d'un utilisateur ordinaire

Après vous être connecté au serveur MySQL en tant qu'utilisateur root, vous pouvez utiliser l'instruction UPDATE pour modifier le champ Authentication_string de la table utilisateur de la base de données MySQL pour changer le mot de passe d'un utilisateur ordinaire. La syntaxe de l'instruction UPDATA est la suivante :

UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";
Copier après la connexion

Parmi eux, le paramètre username est le nom d'utilisateur de l'utilisateur ordinaire, le paramètre hostname est le nom d'hôte de l'utilisateur ordinaire et newpwd est le nouveau mot de passe à modifier.

Notez qu'après avoir exécuté l'instruction UPDATE, vous devez exécuter l'instruction FLUSH PRIVILEGES pour recharger les autorisations utilisateur.

Exemple 3

Utilisez l'utilisateur root pour vous connecter au serveur MySQL, puis utilisez l'instruction UPDATE pour changer le mot de passe de l'utilisateur test en "newpwd2". L'instruction SQL et les résultats d'exécution sont les suivants :

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)
Copier après la connexion

Cela peut. Les résultats d'exécution montrent que le mot de passe a été modifié avec succès. Le mot de passe de testuser a été remplacé par newpwd2. Après avoir rechargé les autorisations à l'aide de FLUSH PRIVILEGES, vous pouvez vous connecter à l'utilisateur testuser avec le nouveau mot de passe.

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

  • Le nom du compte administrateur de la racine d'installation par défaut de MySQL, comme nous le savons tous, afin de renforcer la sécurité, vous devez modifier un nom d'utilisateur, tel que superutilisateur, ou un nom spécifique à l'entreprise, par exemple, xxx_admin.

Contre-mesures :

  • Créez d'abord un utilisateur avec. les mêmes autorisations que l'utilisateur root .

GRANT ALL PRIVILEGES ON *.* TO 'x_admin'@'127.0.0.1' IDENTIFIED BY 'xxxx';
Copier après la connexion
  • 删除默认的root用户.

drop user root@'127.0.0.1';
drop user root@'localhost';
drop user root@'::1';
Copier après la connexion

用户账号:

格式为 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;
Copier après la connexion

修改视图(非root的暂不修改)

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

2、存储过程/函数

情况与视图类似

查看存储过程/视图

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

或者

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

修改存储例程,可直接修改mysql.proc

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

如果修改所有库

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

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 -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

【相关推荐: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