Mysql 루트 사용자 삭제 방법: 1. "CREATE USER" 문을 사용하여 루트 사용자와 동일한 권한을 가진 사용자를 생성합니다. 2. "drop user" 문을 사용하여 다음 구문을 사용하여 루트 사용자를 삭제합니다. "DROP USER 루트 사용자 계정".
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
MySQL의 기본 루트 사용자 삭제
요구 사항 분석:
루트 비밀번호는 공유 기술 문서, 이메일, 스크린샷 등 여러 위치에 나타납니다.
기본 MySQL 설치 관리자입니다. 계정 이름은 모두 알고 있듯이 루트입니다. 보안을 강화하려면 슈퍼유저나 회사 특성에 맞는 사용자 이름을 변경해야 합니다.
대책:
먼저 루트 사용자와 동일한 권한을 가진 사용자 이름을 만듭니다.
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';
사용자 계정:
형식은 user_name'@'host_name입니다.
여기서 user_name은 사용자 이름이고, host_name은 사용자가 MySQL에 연결하는 데 사용하는 호스트 이름인 호스트 이름입니다.
생성 과정에서 호스트 이름을 지정하지 않고 사용자 이름만 지정할 경우 호스트 이름은 기본적으로 "%"로 지정됩니다. 이는 호스트 그룹을 의미합니다. 즉, 모든 호스트에게 권한이 열려 있습니다.
주의:
1. 보기
루트 계정을 DEFINER의 보기로 사용하는 경우 루트를 삭제하면 해당 보기를 사용할 수 없으며 권한이 없다는 메시지가 표시되므로 주의해야 합니다. 뷰가 존재하는지 미리 확인하고 존재한다면 뷰의 DEFINER 속성을 수정해야 합니다.
뷰 수정은 해당 뷰가 다른 SQL 문에 의해 점유되어 있지 않는 한 즉시 완료될 수 있는 작업입니다.
뷰 보기
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. 루트 사용자를 사용하여 MySQL 스크립트에 연결합니다
이런 종류의 문제는 해결하기가 더 쉽습니다. 스크립트에 지정된 작업을 수행하기 위해 스크립트에 대한 별도의 계정을 만들 수 있습니다. 사용자 이름은 script_로 지정하거나 권한이 충분합니다. 너무 많은 권한을 할당하지 마세요. .방법: 사용자를 추가하는 스크립트(일괄 실행에 협조)
#!/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!