Heim > häufiges Problem > Hauptteil

Wie heißt der Superadministrator der MySQL-Datenbank?

百草
Freigeben: 2023-06-27 13:50:09
Original
2861 Leute haben es durchsucht

Der Name des Superadministrators der MySQL-Datenbank ist „root“. Bei der Installation von MySQL wird standardmäßig ein Benutzer namens „root“ erstellt, der den gesamten MySQL-Server steuern kann Hohe Berechtigungen, nicht nur Sie können Ihr eigenes Passwort ändern, sondern auch die Passwörter anderer Benutzer.

Wie heißt der Superadministrator der MySQL-Datenbank?

Das Betriebssystem dieses Tutorials: Windows 10-System, MySQL-Version 8.0, Dell G3-Computer.

Der Superadministratorname der MySQL-Datenbank ist „root“

Bei der Installation von MySQL wird standardmäßig ein Benutzer mit dem Namen root erstellt. Dieser Benutzer verfügt über Superprivilegien und kann den gesamten MySQL-Server steuern.

Um zu verhindern, dass jemand den Root-Benutzer in böswilliger Absicht zur Steuerung der Datenbank verwendet, erstellen wir bei der täglichen Verwaltung und dem Betrieb von MySQL normalerweise einige Benutzer mit entsprechenden Berechtigungen und verwenden den Root-Benutzer so wenig oder so wenig wie möglich zum Anmelden zum System, um den sicheren Zugriff zu gewährleisten.

Im Allgemeinen sind die Berechtigungen von Root-Superadministratoren viel größer als die von normalen Benutzern, sodass für die Ausführung einiger Vorgänge Root-Berechtigungen erforderlich sind.

Der Root-Benutzer verfügt über sehr hohe Berechtigungen und kann nicht nur sein eigenes Passwort ändern, sondern auch die Passwörter anderer Benutzer.

MySQL ändert Root-Passwort

In MySQL verfügt der Root-Benutzer über sehr hohe Berechtigungen, daher muss die Sicherheit des Root-Benutzerpassworts gewährleistet sein. Es gibt viele Möglichkeiten, das Root-Benutzerkennwort zu ändern. In diesem Abschnitt werden einige häufig verwendete Methoden zum Ändern des Root-Benutzerkennworts vorgestellt.

Ändern Sie die Benutzertabelle der MySQL-Datenbank

Da alle Kontoinformationen in der Benutzertabelle gespeichert sind, können Sie das Passwort des Root-Benutzers direkt ändern, indem Sie die Benutzertabelle ändern.

Nachdem sich der Root-Benutzer beim MySQL-Server angemeldet hat, können Sie mit der UPDATE-Anweisung das Feld „authentication_string“ der Benutzertabelle der MySQL-Datenbank ändern, um das Kennwort des Benutzers zu ändern.

1. Das Syntaxformat für die Verwendung der UPDATA-Anweisung zum Ändern des Root-Benutzerkennworts lautet wie folgt:

UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
Nach dem Login kopieren

Das neue Kennwort muss mit der Funktion PASSWORD() verschlüsselt werden. Nachdem Sie die UPDATE-Anweisung ausgeführt haben, müssen Sie die FLUSH PRIVILEGES-Anweisung ausführen, um die Benutzerberechtigungen neu zu laden.

2. Verwenden Sie die SET-Anweisung, um das Passwort des Root-Benutzers zu ändern. Die SET PASSWORD-Anweisung kann verwendet werden, um das Login-Passwort anderer Benutzer oder das Passwort des von Ihnen verwendeten Kontos zurückzusetzen. Die Syntaxstruktur der Verwendung der SET-Anweisung zum Ändern des Passworts ist wie folgt:

SET PASSWORD = PASSWORD ("rootpwd");
Nach dem Login kopieren

MySQL-Root ändert das Passwort eines normalen Benutzers

1 Verwenden Sie die SET-Anweisung, um das Passwort eines normalen Benutzers zu ändern

In MySQL , nur der Root-Benutzer kann das Passwort ändern, indem er die MySQL-Datenbank aktualisiert. Nachdem Sie sich als Root-Benutzer beim MySQL-Server angemeldet haben, können Sie mit der SET-Anweisung das normale Benutzerkennwort ändern. Das Syntaxformat lautet wie folgt:

SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
Nach dem Login kopieren

Unter diesen ist der Benutzername-Parameter der Benutzername eines normalen Benutzers, der Hostname-Parameter der Hostname eines normalen Benutzers und newpwd ist das neue Passwort, das geändert werden soll.

Hinweis: Das neue Passwort muss mit der Funktion PASSWORD() verschlüsselt werden. Wenn es nicht mit PASSWORD() verschlüsselt wird, wird es erfolgreich ausgeführt, der Benutzer kann sich jedoch nicht anmelden.

2. Wenn ein normaler Benutzer sein Passwort ändert, kann er die FOR-Klausel weglassen, um sein Passwort zu ändern. Das Syntaxformat lautet wie folgt:

SET PASSWORD = PASSWORD('newpwd');
Nach dem Login kopieren

Beispiel 1

Nachdem sich der Root-Benutzer beim MySQL-Server angemeldet hat, verwenden Sie die SET-Anweisung, um das Passwort des Testuser-Benutzers in „newpwd“ zu ändern. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt folgt:

mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd"); 
Query OK, 0 rows affected, 1 warning (0.01 sec)
Nach dem Login kopieren

Wie aus den laufenden Ergebnissen ersichtlich ist, wurde die SET-Anweisung erfolgreich ausgeführt und das Passwort des Testuser-Benutzers wurde erfolgreich auf „newpwd“ gesetzt.

3. Verwenden Sie die UPDATE-Anweisung, um das Passwort eines normalen Benutzers zu ändern.

Nachdem Sie sich als Root-Benutzer beim MySQL-Server angemeldet haben, können Sie mit der UPDATE-Anweisung das Feld „authentication_string“ der Benutzertabelle der MySQL-Datenbank ändern Ändern Sie das Passwort eines normalen Benutzers. Die Syntax der UPDATA-Anweisung lautet wie folgt:

UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";
Nach dem Login kopieren

Unter diesen ist der Benutzername-Parameter der Benutzername des normalen Benutzers, der Hostname-Parameter der Hostname des normalen Benutzers und newpwd ist das neue Passwort, das geändert werden soll.

Beachten Sie, dass Sie nach der Ausführung der UPDATE-Anweisung die FLUSH PRIVILEGES-Anweisung ausführen müssen, um die Benutzerberechtigungen neu zu laden.

Beispiel 3

Verwenden Sie den Root-Benutzer, um sich beim MySQL-Server anzumelden, und verwenden Sie dann die UPDATE-Anweisung, um das Passwort des Testuser-Benutzers in „newpwd2“ zu ändern. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt:

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)
Nach dem Login kopieren

Das ist möglich Aus den Laufergebnissen ist ersichtlich, dass das Passwort erfolgreich geändert wurde. Das Passwort von testuser wurde in newpwd2 geändert. Nach dem Neuladen der Berechtigungen mit FLUSH PRIVILEGES können Sie sich mit dem neuen Passwort beim Benutzer testuser anmelden.

Löschen Sie den Standard-Root-Benutzer von MySQL.

Anforderungsanalyse:

Das Root-Passwort erscheint an vielen Stellen, z. B. in freigegebenen technischen Dokumenten, E-Mails und Screenshots.

Der Standard-Administratorkontoname der MySQL-Installation ist root, was gut ist bekannt. Um die Sicherheit zu erhöhen, müssen Sie einen Benutzernamen ändern, z. B. Superuser, oder einen mit Unternehmensmerkmalen.

Gegenmaßnahmen:

Erstellen Sie zunächst einen Benutzer mit denselben Berechtigungen wie der Root-Benutzer

GRANT ALL PRIVILEGES ON *.* TO 'x_admin'@'127.0.0.1' IDENTIFIED BY 'xxxx';
Nach dem Login kopieren

Löschen Sie den Standard-Root-Benutzer

drop user root@'127.0.0.1'; 
drop user root@'localhost'; 
drop user root@'::1';
Nach dem Login kopieren

Benutzerkonto:

Das Format ist Benutzername'@'Hostname.

Der Benutzername ist hier der Benutzername und der Hostname ist der Hostname, also der Name des Hosts, den der Benutzer für die Verbindung mit MySQL verwendet.

如果在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限。

注意问题:

1、视图

曾经用root帐号为DEFINER的视图,如果将root删除,将提示该视图无法使用,没有权限.所以要注意提前查看是否存在视图,存在的话,需要修改该视图的DEFINER属性.

修改视图,是瞬间就能完成的操作,除非该视图被其他sql语句占用,处于锁定的状态.

查看视图

select TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION, DEFINER from information_schema.VIEWS;
Nach dem Login kopieren

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

ALTER DEFINER=`x_admin`@`127.0.0.1` SQL SECURITY DEFINER VIEW v_name AS...
Nach dem Login kopieren

2、存储过程/函数

情况与视图类似

查看存储过程/视图

select ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE,DEFINER from information_schema.ROUTINES;
Nach dem Login kopieren

或者

select db,name,type,definer from mysql.proc;
Nach dem Login kopieren

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

update mysql.proc set definer='x_admin@127.0.0.1'where db='db_name';
Nach dem Login kopieren

如果修改所有库

update mysql.proc set definer='x_admin@127.0.0.1';
Nach dem Login kopieren

3、用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()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie heißt der Superadministrator der MySQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage