MySQL データベースのスーパー管理者の名前は「root」です。MySQL がインストールされると、デフォルトで root という名前のユーザーが作成されます。このユーザーにはスーパー権限があり、MySQL サーバー全体を制御できます。 root ユーザーには非常に高い権限があり、自分のパスワードだけでなく、他のユーザーのパスワードも変更できます。
このチュートリアルのオペレーティング システム: Windows 10 システム、mysql バージョン 8.0、Dell G3 コンピューター。
mysql データベースのスーパー管理者名は「root」です。
MySQL をインストールすると、スーパー権限を持つ root という名前のユーザーがデフォルトで作成されます。 MySQLサーバー全体を制御できます。
MySQL の日常的な管理と運用では、誰かがデータベースを制御するために root ユーザーを悪意を持って使用することを防ぐために、通常、適切な権限を持つユーザーを作成し、root ユーザーの使用を最小限または最小限に抑えます。データへの安全なアクセスを確保するために、システムにログインすることが可能です。
一般に、root スーパー管理者は通常のユーザーよりもはるかに大きな権限を持っているため、一部の操作の実行には root 権限が必要です。
root ユーザーは非常に高い権限を持っており、自分のパスワードを変更できるだけでなく、他のユーザーのパスワードも変更できます。
MySQL は root パスワードを変更します
MySQL では、root ユーザーは非常に高い権限を持っているため、root ユーザーのパスワードのセキュリティを確保する必要があります。 root ユーザーのパスワードを変更するにはさまざまな方法がありますが、このセクションでは、root ユーザーのパスワードを変更するために一般的に使用されるいくつかの方法を紹介します。
MySQL データベースのユーザー テーブルを変更する
すべてのアカウント情報はユーザー テーブルに保存されているため、ユーザー テーブルを変更することで root ユーザーのパスワードを直接変更できます。
root ユーザーが MySQL サーバーにログインした後、UPDATE ステートメントを使用して MySQL データベースのユーザー テーブルの authentication_string フィールドを変更し、ユーザーのパスワードを変更できます。
1. UPDATA ステートメントを使用して root ユーザーのパスワードを変更するための構文形式は次のとおりです:
UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
新しいパスワードは PASSWORD() 関数を使用して暗号化する必要があります。 UPDATE ステートメントを実行した後、FLUSH PRIVILEGES ステートメントを実行してユーザー権限を再ロードする必要があります。
2. SET ステートメントを使用して、root ユーザーのパスワードを変更します。
SET PASSWORD ステートメントを使用して、他のユーザーのログイン パスワードまたは使用するアカウントのパスワードをリセットできます。 。 SET ステートメントを使用してパスワードを変更する構文構造は次のとおりです:
SET PASSWORD = PASSWORD ("rootpwd");
MySQL root は通常のユーザーのパスワードを変更します
1. SET ステートメントを使用します。一般ユーザーのパスワードを変更するには
#MySQL では、root ユーザーのみが MySQL データベースを更新してパスワードを変更できます。 root ユーザーとして MySQL サーバーにログインした後、SET ステートメントを使用して通常のユーザーのパスワードを変更できます。構文形式は次のとおりです。SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');このうち、username パラメータは一般ユーザのユーザ名、hostname パラメータは一般ユーザのホスト名、newpwd は変更する新しいパスワードです。 。 注: 新しいパスワードは、PASSWORD() 関数を使用して暗号化する必要があります。PASSWORD() を使用して暗号化されていない場合、パスワードは正常に実行されますが、ユーザーはログインできません。 2. 一般ユーザーがパスワードを変更する場合、FOR 句を省略して自分のパスワードを変更できます。構文形式は次のとおりです。
SET PASSWORD = PASSWORD('newpwd');例 1root ユーザーが MySQL サーバーにログインした後、SET ステートメントを使用して testuser ユーザーのパスワードを「newpwd」に変更します。 SQL ステートメントと実行結果は次のとおりです。
mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd"); Query OK, 0 rows affected, 1 warning (0.01 sec)実行結果から、SET ステートメントが正常に実行され、testuser ユーザーのパスワードが "newpwd" に正常に設定されたことがわかります。 3. UPDATE ステートメントを使用して一般ユーザーのパスワードを変更する MySQL サーバーに root ユーザーとしてログインした後、UPDATE ステートメントを使用して、 MySQL データベースのユーザー テーブルを使用して、通常のユーザーのパスワードを変更します。 UPDATA ステートメントの構文は次のとおりです。
UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";このうち、username パラメーターは一般ユーザーのユーザー名、hostname パラメーターは一般ユーザーのホスト名、newpwd は新しいパスワードです。変えられること。 UPDATE ステートメントを実行した後、FLUSH PRIVILEGES ステートメントを実行してユーザー権限を再ロードする必要があることに注意してください。 例 3root ユーザーを使用して MySQL サーバーにログインし、UPDATE ステートメントを使用して testuser ユーザーのパスワードを「newpwd2」に変更します。SQL ステートメントと実行結果は次のとおりです。
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)実行結果から、パスワードが正常に変更されたことがわかります。 testuserのパスワードがnewpwd2に変更されました。 FLUSH PRIVILEGES を使用して権限を再ロードした後、新しいパスワードを使用して testuser ユーザーにログインできます。
MySQL のデフォルトの root ユーザーを削除します
要件分析:root パスワードは、共有された技術文書、電子メール、スクリーンショット.MySQL によってデフォルトでインストールされる管理者アカウント名 root はよく知られています。セキュリティを強化するには、ユーザー名をスーパーユーザーなどに変更するか、会社の特徴に合わせて変更する必要があります。たとえば、xxx_admin .対処方法:最初に root ユーザーと同じ権限を持つユーザーを作成します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';
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()
以上がmysql データベースのスーパー管理者の名前は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。