Apakah nama pentadbir super pangkalan data mysql?

青灯夜游
Lepaskan: 2023-01-06 15:42:12
asal
5042 orang telah melayarinya

Nama pentadbir super pangkalan data mysql ialah "root". Apabila MySQL dipasang, pengguna bernama root akan dibuat secara lalai Pengguna ini mempunyai keistimewaan super dan boleh mengawal keseluruhan pelayan MySQL. Pengguna root mempunyai kebenaran yang sangat tinggi dan bukan sahaja boleh menukar kata laluannya sendiri, tetapi juga menukar kata laluan pengguna lain.

Apakah nama pentadbir super pangkalan data mysql?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Java 8, komputer DELL G3.

Nama pentadbir super pangkalan data mysql ialah "root".

Apabila MySQL dipasang, pengguna bernama root akan dibuat secara lalai Pengguna ini mempunyai keistimewaan super dan boleh mengawal keseluruhan pelayan MySQL.

Dalam pengurusan dan pengendalian harian MySQL, untuk mengelakkan seseorang daripada menggunakan pengguna root secara berniat jahat untuk mengawal pangkalan data, kami biasanya mencipta beberapa pengguna dengan kebenaran yang sesuai dan menggunakan pengguna root sedikit atau sedikit mungkin untuk log masuk ke sistem untuk memastikan akses selamat kepada data.

Secara amnya, pentadbir super root mempunyai keizinan yang jauh lebih besar daripada pengguna biasa, jadi sesetengah operasi memerlukan kebenaran root untuk dijalankan.

Pengguna root mempunyai kebenaran yang sangat tinggi dan bukan sahaja boleh menukar kata laluannya sendiri, tetapi juga menukar kata laluan pengguna lain.

MySQL menukar kata laluan root

Dalam MySQL, pengguna root mempunyai kebenaran yang sangat tinggi, jadi keselamatan kata laluan pengguna root mesti dipastikan. Terdapat banyak cara untuk menukar kata laluan pengguna root Bahagian ini akan memperkenalkan beberapa kaedah yang biasa digunakan untuk menukar kata laluan pengguna root.

  • Ubah suai jadual pengguna pangkalan data MySQL

Oleh kerana semua maklumat akaun disimpan dalam jadual pengguna, ia boleh terus Tukar kata laluan pengguna root dengan mengubah suai jadual pengguna.

Selepas pengguna root log masuk ke pelayan MySQL, anda boleh menggunakan pernyataan KEMASKINI untuk mengubah suai medan authentication_string bagi jadual pengguna pangkalan data MySQL untuk mengubah suai kata laluan pengguna.

Format sintaks untuk menggunakan pernyataan UPDATA untuk mengubah suai kata laluan pengguna akar adalah seperti berikut:

UPDATE mysql.user set authentication_string = PASSWORD ("rootpwd) WHERE User = "root" and Host="localhost";
Salin selepas log masuk

Kata laluan baharu mesti disulitkan menggunakan fungsi PASSWORD(). Selepas melaksanakan kenyataan UPDATE, anda perlu melaksanakan kenyataan FLUSH PRIVILEGES untuk memuatkan semula kebenaran pengguna.

  • Gunakan pernyataan SET untuk mengubah suai kata laluan pengguna root

Pernyataan SET PASSWORD boleh digunakan untuk menetapkan semula log masuk pengguna lain Kata laluan atau kata laluan akaun yang anda gunakan. Struktur sintaks menggunakan pernyataan SET untuk menukar kata laluan adalah seperti berikut:

SET PASSWORD = PASSWORD ("rootpwd");
Salin selepas log masuk

MySQL root menukar kata laluan pengguna biasa

  • Menggunakan pernyataan SET untuk menukar kata laluan pengguna biasa

Dalam MySQL, hanya pengguna root boleh menukar kata laluan dengan mengemas kini pangkalan data MySQL. Selepas log masuk ke pelayan MySQL sebagai pengguna akar, anda boleh menggunakan pernyataan SET untuk mengubah suai kata laluan pengguna biasa. Format sintaks adalah seperti berikut:

SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
Salin selepas log masuk

Antaranya, parameter nama pengguna ialah nama pengguna pengguna biasa, parameter nama hos ialah nama hos pengguna biasa, dan newpwd ialah kata laluan baharu yang akan ditukar. .

Nota: Kata laluan baharu mesti disulitkan menggunakan fungsi PASSWORD() Jika ia tidak disulitkan menggunakan PASSWORD(), ia akan berjaya dilaksanakan, tetapi pengguna tidak akan dapat log masuk.

Jika pengguna biasa menukar kata laluan mereka, mereka boleh meninggalkan klausa FOR untuk menukar kata laluan mereka. Format sintaks adalah seperti berikut:

SET PASSWORD = PASSWORD('newpwd');
Salin selepas log masuk

Contoh 1

Selepas pengguna root log masuk ke pelayan MySQL, gunakan pernyataan SET untuk menukar kata laluan pengguna penguji kepada "newpwd ". Penyataan SQL dan keputusan berjalan adalah seperti berikut:

mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd");
Query OK, 0 rows affected, 1 warning (0.01 sec)
Salin selepas log masuk

Ia boleh dilihat daripada keputusan yang dijalankan bahawa pernyataan SET telah berjaya dilaksanakan dan kata laluan pengguna penguji telah berjaya ditetapkan kepada "newpwd" .

  • Gunakan pernyataan KEMASKINI untuk menukar kata laluan pengguna biasa

Selepas log masuk ke pelayan MySQL sebagai pengguna root, anda boleh menggunakan kenyataan UPDATE Ubah suai medan authentication_string bagi jadual pengguna pangkalan data MySQL untuk mengubah suai kata laluan pengguna biasa. Sintaks pernyataan UPDATA adalah seperti berikut:

UPDATE MySQL.user SET authentication_string = PASSWORD("newpwd") WHERE User = "username" AND Host = "hostname";
Salin selepas log masuk

Antaranya, parameter nama pengguna ialah nama pengguna pengguna biasa, parameter nama hos ialah nama hos pengguna biasa, dan newpwd ialah kata laluan baru untuk ditukar.

Perhatikan bahawa selepas melaksanakan kenyataan KEMASKINI, anda perlu melaksanakan pernyataan FLUSH PRIVILEGES untuk memuatkan semula kebenaran pengguna.

Contoh 3

Gunakan pengguna root untuk log masuk ke pelayan MySQL, dan kemudian gunakan pernyataan KEMASKINI untuk menukar kata laluan pengguna penguji kepada "newpwd2". keputusan adalah seperti berikut:

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)
Salin selepas log masuk

Ia boleh dilihat daripada keputusan yang dijalankan bahawa kata laluan telah berjaya ditukar. Kata laluan penguji telah ditukar kepada newpwd2. Selepas memuatkan semula kebenaran menggunakan FLUSH PRIVILEGES, anda boleh log masuk ke pengguna penguji dengan kata laluan baharu.

Padam pengguna root lalai MySQL

Analisis keperluan:

  • Kata laluan akar telah muncul di banyak tempat, seperti perkongsian Dokumen teknikal, e-mel, tangkapan skrin

  • Nama akaun pentadbir lalai MySQL ialah root, yang terkenal untuk meningkatkan keselamatan, anda perlu menukar nama pengguna, seperti superuser, atau mempunyai khusus Syarikat Contohnya, xxx_admin.

Langkah Balas:

  • Mula-mula buat pengguna dengan kebenaran yang sama seperti root. pengguna.

GRANT ALL PRIVILEGES ON *.* TO 'x_admin'@'127.0.0.1' IDENTIFIED BY 'xxxx';
Salin selepas log masuk
  • 删除默认的root用户.

drop user root@'127.0.0.1';
drop user root@'localhost';
drop user root@'::1';
Salin selepas log masuk

用户账号:

格式为 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;
Salin selepas log masuk

修改视图(非root的暂不修改)

ALTER DEFINER=`x_admin`@`127.0.0.1` SQL SECURITY DEFINER VIEW v_name AS...
Salin selepas log masuk

2、存储过程/函数

情况与视图类似

查看存储过程/视图

select ROUTINE_SCHEMA,ROUTINE_NAME,ROUTINE_TYPE,DEFINER from information_schema.ROUTINES;
Salin selepas log masuk

或者

select db,name,type,definer from mysql.proc;
Salin selepas log masuk

修改存储例程,可直接修改mysql.proc

update mysql.proc set definer='x_admin@127.0.0.1'where db='db_name';
Salin selepas log masuk

如果修改所有库

update mysql.proc set definer='x_admin@127.0.0.1';
Salin selepas log masuk

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()
Salin selepas log masuk

【相关推荐:mysql视频教程

Atas ialah kandungan terperinci Apakah nama pentadbir super pangkalan data mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan