您好,登錄后才能下訂單哦!
這篇文章主要介紹“mysql數據庫的超級管理員密碼怎么修改”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mysql數據庫的超級管理員密碼怎么修改”文章能幫助大家解決問題。
mysql數據庫的超級管理員名稱是“root”。MySQL在安裝時,會默認創建一個名為root的用戶,該用戶擁有超級權限,可以控制整個MySQL服務器。root用戶擁有很高的權限,不僅可以修改自己的密碼,還可以修改其他用戶的密碼。
mysql數據庫的超級管理員名稱是“root”。
MySQL 在安裝時,會默認創建一個名為 root 的用戶,該用戶擁有超級權限,可以控制整個 MySQL 服務器。
在對 MySQL 的日常管理和操作中,為了避免有人惡意使用 root 用戶控制數據庫,我們通常創建一些具有適當權限的用戶,盡可能地不用或少用 root 用戶登錄系統,以此來確保數據的安全訪問。
一般root超級管理員的權限會比一般用戶的權限大很多,所以有些操作要root權限才能運行。
root 用戶擁有很高的權限,不僅可以修改自己的密碼,還可以修改其他用戶的密碼。
在 MySQL 中,root 用戶擁有很高的權限,因此必須保證 root 用戶密碼的安全。修改 root 用戶密碼的方式有很多種,本節將介紹幾種常用的修改 root 用戶密碼的方法。
修改MySQL數據庫的user表
因為所有賬戶信息都保存在 user 表中,因此可以直接通過修改 user 表來改變 root 用戶的密碼。
root 用戶登錄到 MySQL 服務器后,可以使用 UPDATE 語句修改 MySQL 數據庫的 user 表的 authentication_string 字段,從而修改用戶的密碼。
使用 UPDATA 語句修改 root 用戶密碼的語法格式如下:
UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
新密碼必須使用 PASSWORD() 函數來加密。執行UPDATE語句后,需要執行FLUSH PRIVILEGES語句重新加載用戶權限。
使用SET語句修改root用戶的密碼
SET PASSWORD 語句可以用來重新設置其他用戶的登錄密碼或者自己使用的賬戶的密碼。使用 SET 語句修改密碼的語法結構如下:
SET PASSWORD = PASSWORD ("rootpwd");
使用SET語句修改普通用戶的密碼
在 MySQL 中,只有 root 用戶可以通過更新 MySQL 數據庫來更改密碼。使用 root 用戶登錄到 MySQL 服務器后,可以使用 SET 語句來修改普通用戶密碼。語法格式如下:
SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
其中,username 參數是普通用戶的用戶名,hostname 參數是普通用戶的主機名,newpwd 是要更改的新密碼。
注意:新密碼必須使用 PASSWORD() 函數來加密,如果不使用 PASSWORD() 加密,也會執行成功,但是用戶會無法登錄。
如果是普通用戶修改密碼,可省略 FOR 子句來更改自己的密碼。語法格式如下:
SET PASSWORD = PASSWORD('newpwd');
示例 1
root 用戶登錄 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”。
使用UPDATE語句修改普通用戶的密碼
使用 root 用戶登錄 MySQL 服務器后,可以使用 UPDATE 語句修改 MySQL 數據庫的 user 表的 authentication_string 字段,從而修改普通用戶的密碼。UPDATA 語句的語法如下:
UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";
其中,username 參數是普通用戶的用戶名,hostname 參數是普通用戶的主機名,newpwd 是要更改的新密碼。
注意,執行 UPDATE 語句后,需要執行 FLUSH PRIVILEGES 語句重新加載用戶權限。
示例 3
使用 root 用戶登錄 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 用戶了。
需求分析:
root密碼在多個地方出現過,比如分享的技術文檔,郵件,截圖.
MySQL默認安裝的管理員帳號名稱root,眾所周知.為了增強安全性,需要更換一個用戶名稱,例如換成superuser,或者有公司特色的.例如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';
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 -h227.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數據庫的超級管理員密碼怎么修改”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。