`
dingdangxiaoma
  • 浏览: 71266 次
  • 性别: 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服务器交互的重要应用程序。绿色版通常指的是免安装、便携式的版本,可以直接运行而无需在计算机上进行正式的安装过程,这对于需要在不同设备间移动工作或者不想...

    C#多线程连接mysql,Access

    本篇文章将深入探讨如何在C#中使用多线程技术连接这两种数据库,并对比它们在性能上的差异。 首先,让我们来了解C#中的多线程。多线程允许一个应用程序同时执行多个任务,提升程序的执行效率。在C#中,我们可以使用...

    DELPHI 7 连接MYSQL 完全解决

    - **原因分析**:由于 MySQL 3.22 及以上版本不再支持 Delphi 7 的 dbExpress 组件,默认提供的 libmysql.dll 文件不兼容 Delphi 7。 #### 知识点三:解决 Delphi 7 与 MySQL 连接问题的步骤 1. **关闭相关服务**...

    彻底解决C# asp.net连接MySQL乱码问题

    ### 彻底解决C# ASP.NET 连接MySQL乱码问题 在开发过程中,尤其是在处理中文数据时,经常遇到的一个问题是数据库连接时出现乱码。本文将详细介绍如何彻底解决使用C# ASP.NET 应用程序连接 MySQL 数据库时出现的乱码...

    最简洁的delphi连接mysql数据库

    Mysql则是世界上最受欢迎的开源关系型数据库管理系统之一,以其性能、稳定性和易于使用而备受青睐。将Delphi与MySQL结合,可以创建强大的数据库驱动的应用程序。下面我们将深入探讨如何在Delphi中连接MySQL数据库,...

    jsp登陆和注册代码,与MYSQL数据库连接,对初学者有很好的借鉴作用

    8. **session管理**:登录成功后,通常会使用session来跟踪已认证的用户,防止未授权的访问。session在服务器端存储用户信息,直到用户注销或session超时。 这个示例对于初学者来说是一个很好的起点,它涵盖了基本...

    MySql数据库连接池C#代码(有注释含测试代码)

    MySQL数据库连接池是提高应用程序性能的一种重要技术,它允许开发者管理多个数据库连接并高效地复用这些连接,而不是每次需要时都创建新的连接。在C#编程中,我们可以使用自定义的连接池或者第三方库如ADO.NET的...

    dev c++ 连接 mysql 方法、库

    这里的`devc++`指的是Dev C++ IDE,`c++`是编程语言,而`mysql 库`则指用于C++连接MySQL数据库的API,通常包括libmysqlclient库。这个库提供了连接、查询、执行SQL语句等操作MySQL数据库所需的功能。 为了在Dev C++...

    MT4连接MYSQL数据库的例子

    为了连接到MySQL数据库,我们可以使用第三方库,例如“MQLMySQL for MQL4”,这个库文件包含了连接和操作MySQL数据库所需的函数。 安装MQLMySQL库后,在MT4的MetaEditor中创建一个新的MQL4脚本或EA。在代码中,我们...

    delphi远程连接MySQL(完美版)

    本教程将详细讲解如何使用Delphi通过SQLConnection控件实现对远程MySQL数据库的完美连接。 首先,我们需要了解SQLConnection控件。这是Delphi集成开发环境中(IDE)提供的一个标准组件,它允许开发者与各种数据库...

    VS连接mysql数据库工具

    总的来说,“VS连接mysql数据库工具”这个主题涉及了软件开发中的多个重要环节,包括数据库连接、数据操作、项目管理等,这些都是IT专业人员日常工作中不可或缺的部分。通过深入学习和实践,你将能够更有效地利用...

    Gridview连接mysql以及分页显示

    总结一下,这个案例涉及了使用C#连接MySQL数据库,使用GridView展示数据,以及实现分页功能的关键步骤。通过理解这些知识点,你可以创建一个功能完备的网格视图,以有效地管理和展示数据库中的大量数据。

    mysql.h 连接mysql

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

    wince 连接 MYSQL服务器

    在嵌入式操作系统Windows CE(简称WinCE)中,连接到MySQL服务器是一项常见的任务,尤其在需要进行数据存储和检索的设备应用中。本篇将详细介绍如何在WinCE环境下使用`mysql.data.cf.dll`库来实现与MySQL服务器的...

    Ajax Jsp 连接MySQL数据库

    在这个“Ajax Jsp 连接MySQL数据库”的主题中,我们将深入探讨如何在JSP页面上利用Ajax技术与后台MySQL数据库进行交互,同时处理多个Ajax请求。 首先,让我们了解基本概念。Ajax的核心是通过JavaScript向服务器发送...

    MySQLDBA运维笔记(总结得特别详细)

    MySQL多实例是指在同一台物理服务器上运行多个MySQL服务器进程,每个实例拥有自己的配置文件、数据目录和端口。 #### 多实例安装实战 多实例安装需要确保系统环境满足需求,安装必要的依赖包,设置好MySQL软件和...

    android连接mysql数据库例子

    这里我们将探讨如何在Android客户端通过网络连接到远程MySQL服务器,并执行相关的数据库操作。 首先,理解客户端-服务器-数据库架构至关重要。在这种模式下,Android设备作为客户端,通过HTTP或HTTPS等网络协议与...

    Qt连接mysql数据库

    在本文中,我们将深入探讨如何使用Qt框架连接到MySQL数据库,这是一个常见的任务,对于开发跨平台的数据库应用程序至关重要。Qt是一个强大的C++库,提供了丰富的功能来构建图形用户界面和网络应用,而MySQL则是一种...

    C#连接Mysql数据需要的DLL文件

    在C#编程环境中,连接MySQL数据库通常涉及到使用特定的库,即MySQL的数据提供者——MySql.Data.dll。这个DLL文件是Oracle公司为.NET开发者提供的,用于在C#应用程序中与MySQL服务器进行交互。本篇文章将深入探讨如何...

Global site tag (gtag.js) - Google Analytics