﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-十三郎的IT生活-随笔分类-数据库</title><link>http://www.cnitblog.com/shisanlangd/category/8038.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 15:00:29 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 15:00:29 GMT</pubDate><ttl>60</ttl><item><title>修改mysql密码的方法</title><link>http://www.cnitblog.com/shisanlangd/archive/2009/08/10/60692.html</link><dc:creator>十三郎</dc:creator><author>十三郎</author><pubDate>Mon, 10 Aug 2009 06:03:00 GMT</pubDate><guid>http://www.cnitblog.com/shisanlangd/archive/2009/08/10/60692.html</guid><wfw:comment>http://www.cnitblog.com/shisanlangd/comments/60692.html</wfw:comment><comments>http://www.cnitblog.com/shisanlangd/archive/2009/08/10/60692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shisanlangd/comments/commentRss/60692.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shisanlangd/services/trackbacks/60692.html</trackback:ping><description><![CDATA[<table width="90%" align="center" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td height="20"><br></td>
        </tr>
        <tr>
            <td>
            <p><br></p>
            <p>use&nbsp;mysql <br>update&nbsp;user&nbsp;set&nbsp;Password=password('newpassword')&nbsp;where&nbsp;User='root'; <br>flush&nbsp;privileges; <br><br>1.通过修改MYSQL数据库中MYSQL库的USER表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就用普通的UPDATE、INSERT语句就可以<br><br>2.在命令行中使用如下命令<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MYSQLADMIN -u root -p PASSWORD mypasswd <br><br>3.可以修改MYSQL文件夹中的MY.INI文件<br><br>4.使用SET PASSWORD语句， <br>mysql&gt; SET PASSWORD FOR myuser@localhost = PASSWORD('mypasswd'); <br><br>5.使用GRANT ... IDENTIFIED BY语句 <br>mysql&gt; GRANT USAGE ON *.* TO myuser@localhost IDENTIFIED BY 'mypassword'; </p>
            </td>
        </tr>
    </tbody>
</table><img src ="http://www.cnitblog.com/shisanlangd/aggbug/60692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shisanlangd/" target="_blank">十三郎</a> 2009-08-10 14:03 <a href="http://www.cnitblog.com/shisanlangd/archive/2009/08/10/60692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开启mysql远程连接</title><link>http://www.cnitblog.com/shisanlangd/archive/2008/11/03/50991.html</link><dc:creator>十三郎</dc:creator><author>十三郎</author><pubDate>Mon, 03 Nov 2008 06:02:00 GMT</pubDate><guid>http://www.cnitblog.com/shisanlangd/archive/2008/11/03/50991.html</guid><wfw:comment>http://www.cnitblog.com/shisanlangd/comments/50991.html</wfw:comment><comments>http://www.cnitblog.com/shisanlangd/archive/2008/11/03/50991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shisanlangd/comments/commentRss/50991.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shisanlangd/services/trackbacks/50991.html</trackback:ping><description><![CDATA[用户受权<br>grant all on *.* to 'root'@'172.20.67.164' identified by 'rain';<br>flush privileges;<br><br>删除用户权限<br>revoke all on *.* from <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#49;&#55;&#50;&#46;&#50;&#48;&#46;&#54;&#55;&#46;&#49;&#54;&#52;">root@<font color=#000000>172.20.67.164</a>;<br></font><br>删除用户<br>drop user <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#49;&#55;&#50;&#46;&#50;&#48;&#46;&#54;&#55;&#46;&#49;&#54;&#52;&#59;">root@<font color=#000000>172.20.67.164;</font><br></a><br>查看用户权限<br>use mysql;<br>select * from user;<br>
<img src ="http://www.cnitblog.com/shisanlangd/aggbug/50991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shisanlangd/" target="_blank">十三郎</a> 2008-11-03 14:02 <a href="http://www.cnitblog.com/shisanlangd/archive/2008/11/03/50991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL安装错误：/usr/local/mysql/libexec/mysqld: unknown option '--skip-federated'</title><link>http://www.cnitblog.com/shisanlangd/archive/2008/10/14/50173.html</link><dc:creator>十三郎</dc:creator><author>十三郎</author><pubDate>Tue, 14 Oct 2008 06:15:00 GMT</pubDate><guid>http://www.cnitblog.com/shisanlangd/archive/2008/10/14/50173.html</guid><wfw:comment>http://www.cnitblog.com/shisanlangd/comments/50173.html</wfw:comment><comments>http://www.cnitblog.com/shisanlangd/archive/2008/10/14/50173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shisanlangd/comments/commentRss/50173.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shisanlangd/services/trackbacks/50173.html</trackback:ping><description><![CDATA[今天在CentOS5.2下源码安装MySQL5.1.28出现如下错误<br>Installing MySQL system tables...<br>
[ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--skip-federated'<br>
[ERROR] Aborting<br>
[Note] /usr/local/mysql/libexec/mysqld: Shutdown complete<br>
<br>只要将/etc/my.cnf文件中的<strong>skip-federated</strong>注释掉即可<br><br> <img src ="http://www.cnitblog.com/shisanlangd/aggbug/50173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shisanlangd/" target="_blank">十三郎</a> 2008-10-14 14:15 <a href="http://www.cnitblog.com/shisanlangd/archive/2008/10/14/50173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL编码问题</title><link>http://www.cnitblog.com/shisanlangd/archive/2007/10/30/35607.html</link><dc:creator>十三郎</dc:creator><author>十三郎</author><pubDate>Tue, 30 Oct 2007 08:11:00 GMT</pubDate><guid>http://www.cnitblog.com/shisanlangd/archive/2007/10/30/35607.html</guid><wfw:comment>http://www.cnitblog.com/shisanlangd/comments/35607.html</wfw:comment><comments>http://www.cnitblog.com/shisanlangd/archive/2007/10/30/35607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/shisanlangd/comments/commentRss/35607.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/shisanlangd/services/trackbacks/35607.html</trackback:ping><description><![CDATA[<span class="Easydone_title"><strong>Mysql</strong>自4.1以后，增加了对字符集的支持。笔者之前对<strong>Mysql</strong>比较了解，刚接触4.1时，感觉Mysql有点多此一举，但后来细想发现，对字符集的支持，虽然对开发者来说，会麻烦一些，但不可否认，是一种进步。对字符集的支持，不仅更加支持多语言，而且，也方便移植。<br>刚开始使用<strong>Mysql</strong>4.1，你可能感觉有点不适，下面，简单阐述一下笔者对Mysql4.1字符集的理解，再讲述如何PHP如何适应<strong>Mysql</strong>的这种变化，希望大家看过这文章后，能够有所收获。<br>如果你对计算机基础知识不了解，请直接阅读&#8220;结论篇&#8221;<br><strong>一．原理篇</strong><br><strong>Mysql</strong>的字符集里有两个概念，一个是&#8220;Character set（字符集）&#8221;，另一个是&#8220;Collations&#8221;。<br><strong>1. Collations<br></strong>Collations翻成中文是&#8220;校验&#8221;，在网页开发的过程中，这个词汇，只在<strong>Mysql</strong>里使用，主要作用是指导<strong>Mysql</strong>对
字符的比较，比如，
ASCII字符集里，Collations规定了a小于b，a等于a，以及a是否等于A之类的。通常，大家基本可以忽略Collations的存在，因为
每个字符集都有一个默认的Collations，通常，使用默认的Collations就可以了。<br><strong>2.字符集<br></strong>与
这对比的是，字符集是个更广的概念，即使是Windows下普通的文本文件，也渗及到字符集的问题。不同的字符集，规定了不同的字符的编码方式。一个
character set
(字符集)是一组符号和编码，比如，ASCII字符集，包括的字符有：数字，大小写字母，分号、换行之类的符号，编码方式是用一个7bit表示一个字符
（A的编码是65，b的编码是98）。ASCII只规定了英文字母的编码，非英文语言不能用ASCII编码表示，为此，不同的国家，都为自己的语言做了编
码，比如，我们国家，就有GB2312编码。但每个国家之间的编码不同，也存在着一些跨平台的问题，为此，一些国际化标准组织，就制定了一些国际通用的编
码，最常用的就是UTF8了。ASCII只对英文符号和英文字母做了编码，GB2312对英文符号，英文字母，汉字做了编码，UTF8对世界上所有的语言
文字做了编码，所以，GB1212的字符包含了ASCII字符，UTF8包含了GB2312字符。由此可见，UTF8是所含最广字符的字符集，所以，在一
些多语言的WEB系统中，一般用UTF8字符集（PHPMyAdmin使用UTF8编码）。<br>任何文本的存储，都渗及到字符集的概念。包括数据库，也包括普通的文本文件。<br><strong>主要术语：</strong><br><strong>字符：</strong>汉字，英文字母，标点符号，拉丁文等等。<br><strong>编码：</strong>将字符转换成计算机存储的格式，比如，A用65表示。<br><strong>字符集：</strong>一组字符以及对应的编码方式。<br><strong>a. Mysql的字符集</strong><br>Mysql目前支持多字符集，并且，支持在不同的字符集之间转换（便于移植和支持多语言）。<br>Mysql
可以设置服务器级字符集、数据库级字符集、数据表级字符集、表列的字符集，实际上，最终使用字符集的地方是存储字符的列，比如，你设置
table1中col1列是字符类型，col1才用到了字符集，如果table1表的col2列是int类型，col2不使用字符集的概念。<br>服务器级字符集、数据库级字符集、数据表级字符集都是为列的字符集做默认选项的。<br>Mysql
一定有一个字符集，可以通过启动时加参数指定，也可以编译时指定，也可以在配置文件里指定。Mysql服务器字符集，只是做为数据库级的默认值。创建数据
库时，你可以指定字符集，如果没指定，就使用服务器的字符集。同理，创建表时，你可以指定表级的字符集，如果没指定，使用数据库的字符集做为表的字符集。
创建列时，你可以指定某列的字符集，如果没指定，就使用表的字符集。<br>通常情况下，您只需设置服务器级的字符集，其它的数据库级，表级，以及列级的字符集，都继承自服务器级字符集。<br>由于UTF8是最广的字符集，所以，一般情况下，我们设置Mysql服务器级的字符集为UTF8！<br><strong>b. 普通文本的字符集问题</strong><br>任何文本的存储，都存在着字符集的问题，普通文本文件也不例外。<br>Windows2000+的系统中，打开记事本，&#8220;保存为&#8230;&#8221;对话框，就有一个选项，可以让你选择存储文本的编码方式。<br>通常情况下，大家都使用Windows2000+的系统，都使用默认的编码，所以，不会碰到字符集的问题。<br>Windows下，保存文本文件时，可以选择编码方式，但打开文本文件时，都是自动判断编码方式的。网上有一个用Windows2000+的记事本玩移动，联通的笑话，大家可以搜搜，就是因为Windows在打开文本文件时，编码判断错误引起的问题。<br>因为自动判断编码有时会错误，所以，有的文本文件，规定了如何识别自身所使用的编码。HTML文件就是一个这样的例子。<br>HTML是文本文件。存储HTML文件的时候，需要使用一个编码，并且，在HTML文件里，也使用HTML语法，指定了该文件所使用的编码（比如）。如果HTML文件没有指定编码，则浏览器自动识别文件的编码。如果HTML指定了编码，则浏览器使用HTML指定的编码。<br>通
常情况下，HTML文件指定的charset和HTML文件自身的编码是一致的，但也有不一致的情况，如果不一致，就会导致网页乱码(此处乱码，只和文本
文件有关，和数据库无关。)使用专门的网页编辑工具（比如Dreamwave），会自动根据网页中的charset值来编码文件。<br><strong>c. php+mysql的字符集问题<br></strong>PHP最终生成的是文本文件，但他要取数据库里的文本，或将文本存进数据库。<br>由于Mysql支持多字符集，默认情况下，Mysql不知道PHP发给他的是什么编码的字符，所以，Mysql要求客户端（PHP）告诉他存取的字符集是什么。<br>PHP通过设置character_set_client，告诉Mysql，PHP存进数据库的是什么编码方式。<br>PHP通过设置character_set_results，告诉Mysql，PHP需要取什么样编码的数据。<br>PHP通过设置character_set_connection，告诉Mysql，PHP查询中的文本，使用什么编码。<br>MYSQL使用设置的编码方式存储文本。<br>假
设Mysql使用setserver来存储文本，PHP的character_set_client是setclient，PHP的
character_set_results是setresult。那么，Mysql将PHP发来的文本，从setclient编码方式，转换成
setserver编码方式，再存入数据库，如果PHP取文本，Mysql将文本从setserver转换成setresult，再发送给PHP。<br>PHP文件（最终生成的HTML文件）本身有个编码，如果Mysql传过来的编码，与PHP文件自身的编码不同，那么，整个网页，必然乱码。所以，PHP一般将自己的编码方式，告诉Mysql。<br>要保证不乱码，就必须将三个编码统一：一是网页自身的编码，二是HTML里指定的编码，三是PHP告诉Mysql的编码(包括character_set_client和character_set_results)。<br>第一和第二个编码，如果使用DW之类的编辑器写的网页，通常是一致的，但用记事本写的网页，有可能不一致。<br>第三个编码，需要手工通知Mysql。这步可以通过在PHP里使用mysql_query(&#8220;set names characterX&#8221;)来实现。<br>d.字符集的转换问题<br>如果小字集转换成大字符集，不会丢失数据，但大字集，转换成小字集，可能会丢失数据。<br>比如，UTF8里有的字符，GB2312不一定有，所以，从UTF8转换到GB2312可能会丢失一些字符。<br>但有种情况例外，先从GB2312转成UTF8，再从UTF8转成GB2312，这种情况是不会丢数据的，因为，刚开始转换的文本，都是GB2312里的字符，所以，整个过程都是GB2312的字符在转换，不会丢失。<br>正因为UTF8能容纳世界上的所有字符，所以，数据库一般使用UTF8编码。这使得，任何字符都可以存进UTF8编码的数据库。<br>e. PHPMyAdmin乱码的问题<br>PHPMyAdmin支持多国语言，这就必定要求HTML页面使用UTF8编码。<br>HTML页面使用UTF8编码，这就必定要求PHPMyAdmin连接Mysql时，character_set_client和character_set_results使用UTF8编码。<br>当
前情况下，PHP连接Mysql只能是使用set
names(或其它几个语句)来通知Mysql的编码方式，如果没有显式的声明编码方式，都将使用latin1编码。一般的程序，都没有显式声明
character_set_client变量，所以，都是将gb2312文本，按latin1编码方式存在数据库，PHPMyAdmin再用utf8格
式读取，肯定是乱码的。<br>如果PHP程序按正确的编码存入数据库，肯定是没有问题的。所以，需要修改的不是PHPMyAdmin.（虽然有时修改PHPMyAdmin可以解决乱码问题，但这不是问题的根本）<br><strong>二．总结篇</strong><br>上面的讲得有点乱，总结一下：<br>1.数据库尽量使用utf8存储（修改/etc/my.cnf，在[mysqld]段加上default-character-set=utf8）<br>(已有的数据库，先转成UTF8格式)<br>2.PHP
程序在查询数据库之前，执行mysql_query(&#8220;set names
xxxx&#8221;);其中xxxx是你网页的编码(charset=xxxx)，如果网页中charset=utf8，则xxxx=utf8，如果网页中
charset=gb2312，则xxxx=gb2312，如果网页中的charset=ipaddr，则xxxx=ipaddr
(开个玩笑，没这编码)<br>几乎所有WEB程序，都有一段连接数据库的公共代码，放在一个文件里，在这文件里，加入mysql_query(&#8220;set names&#8221;)就可以了。<br><strong>3.PHPMyAdmin不需要做改动。<br></strong>4.需要注意的是，为保证网页实际编码(Windows保存对话框里的编码)和他声明的编码(charset=?)是一致的，请用DW之类的工具做网页。</span> <img src ="http://www.cnitblog.com/shisanlangd/aggbug/35607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/shisanlangd/" target="_blank">十三郎</a> 2007-10-30 16:11 <a href="http://www.cnitblog.com/shisanlangd/archive/2007/10/30/35607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>