• 技术文章 >数据库 >mysql教程

    mysql数据库的超级管理员名称是什么

    青灯夜游青灯夜游2023-01-06 15:42:12原创39

    mysql数据库的超级管理员名称是“root”。MySQL在安装时,会默认创建一个名为root的用户,该用户拥有超级权限,可以控制整个MySQL服务器。root用户拥有很高的权限,不仅可以修改自己的密码,还可以修改其他用户的密码。

    本教程操作环境:windows7系统、java8版、DELL G3电脑。

    mysql数据库的超级管理员名称是“root”。

    MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。

    在对 MySQL 的日常管理和操作中,为了避免有人恶意使用 root 用户控制数据库,我们通常创建一些具有适当权限的用户,尽可能地不用或少用 root 用户登录系统,以此来确保数据的安全访问。

    一般root超级管理员的权限会比一般用户的权限大很多,所以有些操作要root权限才能运行。

    root 用户拥有很高的权限,不仅可以修改自己的密码,还可以修改其他用户的密码。

    MySQL修改root密码

    在 MySQL 中,root 用户拥有很高的权限,因此必须保证 root 用户密码的安全。修改 root 用户密码的方式有很多种,本节将介绍几种常用的修改 root 用户密码的方法。

    因为所有账户信息都保存在 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 PASSWORD 语句可以用来重新设置其他用户的登录密码或者自己使用的账户的密码。使用 SET 语句修改密码的语法结构如下:

    SET PASSWORD = PASSWORD ("rootpwd");

    MySQL root修改普通用户密码

    在 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”。

    使用 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 用户了。

    删除MySQL的默认root用户

    需求分析:

    应对策略:

    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、视图

    曾经用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 -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数据库的超级管理员名称是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql
    上一篇:count(*)为什么很慢?原因分析 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP与MySQL连接的方法总结• 一文聊聊MySQL中的插入意向锁• 创建MySQL索引大幅优化某PHP应用性能• node 连接mysql失败怎么办• 聊聊怎么用MySQL快速实现一个推荐算法• mysql事务隔离级别有哪些
    1/1

    PHP中文网