日期:2014-05-16  浏览次数:20683 次

mysql备用知识

一:修改mysql的密码

1. 使用phpmyadmin,这是最简单的了,修改mysql库的user表,不过别忘了使用PASSWORD函数。


2. 使用mysqladmin, mysqladmin -u root -p password mypasswd


3. mysql> REPLACE INTO mysql.user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> FLUSH PRIVILEGES


4. mysql> SET PASSWORD FOR username@"% " = PASSWORD('password');
这里的username是要修改的用户名称。


5. mysql> GRANT USAGE ON *.* TO username@"% " IDENTIFIED BY 'password';
这里的username是要修改的用户名称。


mysql 登录用户名和密码中如果有特殊字符,需要用引号括起来。

比如我登录mysql:mysql -ujianchen -p"woshimima@&axx "

但是需要注意的不能用单引号,需要用双引号


二:无法从其他机器远程连接mysql数据库

别人的机器连我的本机数据库,报“Access denied”错误。后来查阅资料后,知道是由于mysql 4.1以后增加了安全限制,默认root账户可以以localhost和其他IP的方式登录。如果是其他用户则需要配置一下才行。


mysql中对用户的权限和密码信息存储在mysql库的user表中。


该表的结构如下:



?

该表的localhost属性指定了用户的访问来源,如果是不限制机器IP,可以设置成'%',也可以指定具体的IP地址。


通过修改该表用户对应的localhost属性值为'%',问题解决了。

?

有时候还不行的话,是权限不够,所以再执行以下语句一般就OK了。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

FLUSH?PRIVILEGES


三,导入数据报"invalid string value"错误


我的数据库编码为GBK,利用navicat 从一张原有表里导出数据为sql脚本文件,后来将该表数据重新插入时,就报该错误。开始怀疑是数据库编码问题,重新安装数据库设置编码为GBK依然报错。后来经提醒,本地文件的编码是否正确。忽然想起来,我之前好像碰到过这个问题,检查后发现该sql文件的编码问题UTF-8,使用记事本另存为ANSI(本地编码),问题解决。

?

四,导入导出数据库

?

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码

2、只导出表结构
mysqldump -u用户名 -p -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql


二、导入数据库
1、首先建空数据库
mysql>create database abc;

2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码