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.
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";
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");
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');
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');
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)
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";
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)
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';
drop user root@'127.0.0.1'; drop user root@'localhost'; drop user root@'::1';
如果在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限。
注意问题:
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';
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()
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!