`
dingdangxiaoma
  • 浏览: 69319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

由于mysql对用户严格的授权机制让大家碰到了很多连接不上的问题,我这里的一点总结希望能够帮一点小忙:

阅读更多
由于mysql对用户严格的授权机制让大家碰到了很多连接不上的问题,我这里的一点总结希望能够帮一点小忙:     
    mysql的用户连接授权是基于user+host+password的,也就是说每一个被授权的user在初始数据表mysql.user中都有记录     
    刚安装好的mysql初始的用户user和主机host有(null表示为空)     
    3.x版本:--user-----host-----password-----     
                                                root               localhost                   null     
                                                null               localhost                   null     
                                                root                       gcw                                   null     
                                                null                       gcw                                   null     
    4.x版本:--user-----host-----password-----     
                                                root               localhost                   null     
                                                null               localhost                   null     
                                                root                       gcw                                   null     
                                                null                       gcw                                   null     
    5.x版本:--user-----host-----password-----     
                                                root               localhost                   null     
                                                null               localhost                   null     
                                                root                       build                           null     
                                                null                       build                           null     
    很容易看到初始密码都是空的,很危险!!!     
    下面我们来修改密码:     
    登录:如果在mysql       server的本机连接,请不要用       mysql       -h本机名或者ip       -u       root       登录,因为你的计算机名或者ip不在初始授权组里面的host表里面,这就是为什么很多人都很无辜的说为什么自己登录不上去,除非你的计算机名就是localhost。很不幸,大多数不是,所以access       denied。用这个登录:       c:\mysql\bin\mysql       -uroot       回车,ok了吧?现在你拥有了对整个数据库的完全操作权利。现在我们做初始工作:     
    ---------初始化时更改口令---------     
    第一种方法:     
    shell>       mysql       -u       root       mysql     
    mysql>       UPDATE       user       SET       Password=PASSWORD( 'new_password ')       WHERE       user= 'root ';     
    mysql>       FLUSH       PRIVILEGES;     
    在3.22以上的版本还可以用set       password       语句:set       password       for       root=password( 'new_password ');     
    第二种方法:     
    shell> mysql       -u       root       password       new_password     
          
    注意:如果你使用第一种方法在user表里直接更新口令,你必须告诉服务器再次读入授权表(用FLUSH       PRIVILEGES),因为否则改变将不被注意到。     
          
    --------增加新用户权限:-----------     
    你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。         
    //GRANT语句增加新用户:     
    mysql>       grant       all       privileges       on       *.*       to       new_user@new_host       identified       by       'new_password '       with       grant       option;     
    详细描述增加:     
    mysql>       GRANT       ALL       PRIVILEGES       ON       *.*       TO       monty@localhost     
                                                IDENTIFIED       BY       'something '       WITH       GRANT       OPTION;     
    mysql>       GRANT       ALL       PRIVILEGES       ON       *.*       TO       monty@ "% "     
                                                IDENTIFIED       BY       'something '       WITH       GRANT       OPTION;     
    mysql>       GRANT       RELOAD,PROCESS       ON       *.*       TO       admin@localhost;     
    mysql>       GRANT       USAGE       ON       *.*       TO       dummy@localhost;     
    这些GRANT语句安装3个新用户:         
      
    monty         
    可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令( 'something '做这个。注意,我们必须对monty@localhost和monty@ "% "发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。         
    admin         
    可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin       reload、mysqladmin       refresh和mysqladmin       flush-*命令,还有mysqladmin       processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。         
    dummy         
    可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为 'N '--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。         
      
      
    //insert语句增加新用户(不推荐):     
    mysql>       INSERT       INTO       user       VALUES( 'localhost ', 'monty ',PASSWORD( 'something '),     
                                                                    'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ')     
    mysql>       INSERT       INTO       user       VALUES( '% ', 'monty ',PASSWORD( 'something '),     
                                                                    'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ', 'Y ')     
    mysql>       INSERT       INTO       user       SET       Host= 'localhost ',User= 'admin ',     
                                                                        Reload_priv= 'Y ',       Process_priv= 'Y ';     
    mysql>       INSERT       INTO       user       (Host,User,Password)     
                                                                                                    VALUES( 'localhost ', 'dummy ', ' ');     
    mysql>       FLUSH       PRIVILEGES;     
    取决于你的MySQL版本,对上述,你可能必须使用一个不同数目 'Y '值     
      
问题点数:20 回复次数:3
分享到:
评论
1 楼 xxy_aldrich 2009-11-26  
  下面我们来修改密码:     
    登录:如果在mysql       server的本机连接,请不要用       mysql       -h本机名或者ip       -u       root       登录,因为你的计算机名或者ip不在初始授权组里面的host表里面,这就是为什么很多人都很无辜的说为什么自己登录不上去,除非你的计算机名就是localhost。很不幸,大多数不是,所以access       denied

有个疑问,我的主机名是taijisoft,mysql里的host有localhost跟build,用户名跟密码都是root,我用mysql -h localhost -u root -p root 时是可以登录的,但是用mysql -h build -u root -p root是不能登录的,报找不到这个host,想知道这个host到底是指什么?

相关推荐

    远程用户连接mysql授权

    授权法,介绍远程用户连接mysql数据库,给任意远程主机授权访问mysql server的权限。

    MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助。 一般MySQL连接不上,可能有两大...

    spring data jpa 连接mysql8.x的一些问题梳理总结.docx

    前段时间MySQL5.X启动不了服务,网上查了很多方法也为解决,最后升级成8.X系列软件。使用spring data jpa 框架进行连接出现了很多问题,现对相关问题进行总结梳理

    Linux中 MySQL 授权远程连接的方法步骤

    说明:当别的机子(IP )通过客户端的方式在没有授权的情况下是无法连接 MySQL 数据库的,如果需要远程连接 Linux 系统上的 MySQL 时,必须为其 IP 和 具体用户 进行 授权 。一般 root 用户不会提供给开发者。如:...

    .Net/C#连接Mysql数据库Connector/Net MySql.Data.dll 8.20.0+6.9.12

    C#通过MySql.Data.dll连接MySql数据库 在项目中引用组件:MySql.Data.dll (记得复制到本地中选择为true / 或直接把MySql.Data.dll复制到debug文件夹下) 在代码中 using MySql.Data.MySqlClient; ......接下来这里...

    MySQL连接工具 绿色版

    MySQL连接工具 绿色版的 很简单的操作MySQL数据库

    mysql.h 连接mysql

    mysql连接时必须的,。。大家下吧,mysql连接时必须的,。。大家下吧

    C#多线程连接mysql,Access

    C#多线程连接mysql,Access并且比较两者的性能 vs2008 Cs3.5

    mysql8和mysql5的连接驱动jar包

    mysql-connector-java-5.1.30.jar 和mysql-connector-java-8.0.19.jar

    MT4连接MYSQL数据库的例子

    是MT4客户端连接MYSQL的例子,经测试可用

    Android 实现连接MySQL数据库

    Android实现连接MySQL数据库的详细代码,对应的连接详操作文档在https://blog.csdn.net/hongfei568718926/article/details/102533832

    基于 MySQL 协议,Swoole 开发的MySQL数据库连接池.zip

    同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。 也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。超出最大连接数会...

    在JDeveloper中连接MySQL数据库

    使用JDeveloper连接Oracle数据库操作过程简单。能不能连接其它数据库库?这里用连接MySQL数据库给出了一个操作示例。希望能对像我一样的初学者有用。

    Excel VBA 连接MySQL

    使用Excel中的VBA连接MySQL数据库,并进行增删查找等基本操作!很详细的资料,希望能够帮助大家。

    Informatica_Linux下配置MySQL的ODBC连接

    介绍了在linux如何使用Informatica PowerCentor设置到MySQL的连接,本文分别提出MySQL企业版本及社区的连接方案

    阿里云下配置MySQL远程连接的步骤详解

    众所周知在默认情况下,我们安在阿里云上的mysql是不支持远程连接的,但是我们还需要通过一些工具来连接mysql,如navicat,这时就需要我们来修改mysql的远程连接了。 注意一点:当我们修改完mysql权限相关的操作后...

    MySQl\mysql使用教程指南.txt )

    2010-02-04 00:23:51 来源:自学网 浏览:1019 次 内容提要: 内容提要 : 有很多朋友虽然安装好了 mysql 但却不知如何使用它这篇文章中我就从连接 mysql 修改密码、增加用户等方面来学习一些 mysql 常用命令。...

    Mysql数据库连接驱动

    MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。 SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及...

    Gridview连接mysql以及分页显示

    Gridview连接mysql以及分页显示

    VC连接Mysql数据库

    不过也有很大的缺点,比如说操作数据库和数据表不方便,要在类似于控制台的操作界面进行操作数据库。也就是基于这个原因,便想在项目里把数据库的创建,数据表的创建和对数据库的连接都放在程序里实现。方便用户的...

Global site tag (gtag.js) - Google Analytics