mysqlでrootユーザーを削除する方法

青灯夜游
リリース: 2022-01-24 16:43:07
オリジナル
4418 人が閲覧しました

root ユーザーを削除する Mysql メソッド: 1. "CREATE USER" ステートメントを使用して、root ユーザーと同じ権限を持つユーザーを作成します; 2. "drop user" ステートメントを使用して、root ユーザーを削除します、構文は「DROP USER root user account」です。

mysqlでrootユーザーを削除する方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

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 によって使用されていない限り、すぐに実行されます。ステートメントは占有されており、ロックされた状態です。

View view

select TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION, DEFINER from information_schema.VIEWS;
ログイン後にコピー

ビューを変更します (ルート以外のビューは変更されません)一時的に)

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 ビデオチュートリアル###】###

以上がmysqlでrootユーザーを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!