Der Superadministratorname der MySQL-Datenbank ist „root“. Bei der Installation von MySQL wird standardmäßig ein Benutzer namens root erstellt. Dieser Benutzer verfügt über Super-Berechtigungen und kann den gesamten MySQL-Server steuern. Der Root-Benutzer verfügt über sehr hohe Berechtigungen und kann nicht nur sein eigenes Passwort, sondern auch die Passwörter anderer Benutzer ändern.
Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, DELL G3-Computer.
Der Superadministratorname der MySQL-Datenbank ist „root“.
Bei der Installation von MySQL wird standardmäßig ein Benutzer namens 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.
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.
Das Syntaxformat für die Verwendung der UPDATA-Anweisung zum Ändern des Root-Benutzerpassworts lautet wie folgt:
UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
Das neue Passwort 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.
Verwenden Sie die SET-Anweisung, um das Passwort des Root-Benutzers zu ändern
Die SET PASSWORD-Anweisung kann verwendet werden, um das Anmeldepasswort anderer Benutzer oder das Passwort des von Ihnen verwendeten Kontos zurückzusetzen. Die Syntaxstruktur für die Verwendung der SET-Anweisung zum Ändern des Kennworts lautet wie folgt:
SET PASSWORD = PASSWORD ("rootpwd");
Verwenden der SET-Anweisung zum Ändern des Kennworts eines normalen Benutzers
In MySQL kann nur der Root-Benutzer die MySQL-Datenbank aktualisieren und das Passwort ändern. 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.
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.
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 die UPDATE-Anweisung verwenden, um das Feld „authentication_string“ der Benutzertabelle von zu ändern die MySQL-Datenbank, um das Passwort eines normalen Benutzers zu ändern. 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.
Anforderungsanalyse:
Das Root-Passwort erscheint an vielen Stellen, z. B. in freigegebenen technischen Dokumenten, E-Mails und Screenshots.
Der Administratorkontoname des Standardinstallations-Root-Benutzers von MySQL. Wie wir alle wissen, müssen Sie einen Benutzernamen ändern, z. B. Superuser, oder einen unternehmensspezifischen, z. B. xxx_admin.
Gegenmaßnahmen:
Erstellen Sie zunächst einen Benutzer mit die gleichen Berechtigungen wie der Root-Benutzer .
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 时所用主机的名字。
如果在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限。
注意问题:
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';
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()
【相关推荐:mysql视频教程】
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!