一、中文插入乱码(?)的解决
首先设置mysql的默认编码,默认如下:
mysql> show variables like 'character/_set/_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
可以在安装的时候统一设置为utf8,或者在安装完成后进行修改
1、windows下:修改my.ini文件,有两处default-character-set=latin1都改为default-character-set=utf8重启既可。
2、linux下:vi /etc/my.cnf(# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 既已经把my-medium.cnf拷贝到/etc/下了)在[mysqld]下加入default-character-set = utf8,[client]下加入default-character-set = utf8
:wq保存退出
也可直接在mysql>输入
mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;
x为要设置的字符集,如utf8
# show variables like '%char%';# show variables like '%collation_%';
(不知道为什么在Linux下如此“SET character_set_client = x;”修改不能保存,每次改完退出后又回到默认编码)
修改完成后可查看:
mysql> show variables like 'character/_set/_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
二、导入数据时insert语句中只要含有汉字数据就出现“data too long for column”错误
在windows的DOS窗口下运行mysql命令,insert语句中只要含有汉字数据就出现“data too long for column”错误 。而直接用Navicat/MYSQL-Front/SQLyog这样的GUI程序执行同样的sql就没有问题。
这个问题依旧是编码造成的问题,前面已经将mysql的编码格式设置为utf8,现在直接将脚本从记事本拷贝到DOS下用mysql命令窗体下去执行就会报错。因为中文windows下编码默认都是gbk,所以我们从来没遇到过这样的乱码问题。(在dos窗口左上角右键-->属性,当前代码页: 936 (ANSI/OEM - 简体中文 GBK ))验证DOS窗口是GBK编码发送字符。所以用Windows下的GBK中文发到mysql下的utf8中文去执行的时候,报错就不奇怪了。
根据上面的分析,要解决这样的问题有这么几个方法,
1、那就直接用GUI程序执行sql;
2、要么用记事本或UltraEdit等文本编辑器将脚本文件的编码转化为utf8后在执行;
3、要么在调用mysql的时候加上--default-character-set=gbk 的参数。即 使用 mysql -uroot -p --default-character-set=gbk 登录即可。 注意,不要因为你的数据库是utf8编码就使用mysql -uroot -p --default-character-set=utf8去登录。我们这里说的是dos中发出的指令字符串的编码,dos窗口是不会用utf8编码去发送指令的。
三、日期类型保存时丢失“时分秒”
在oracle数据库下使用的DATE类型在mysql数据库中DATE类型不一致。sql脚本是用工具生成的,直接将oracle下的Date 生成mysql下的DATE类型,造成在mysql环境下保存的时间类型是“yyyy-MM-dd”,将生成的mysql脚本里面的DATE修改为timestamp类型(“yyyy-MM-dd HH:mm:ss:FF(6)”)。
-----------------------------------------------------------------------------------------------------------------------------
---------------------附------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
常用的mysql命令:
1、连接到MYSQL mysql -h主机地址 -u用户名 -p用户密码
C:/>mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 75 to server version: 5.0.18-nt
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql>
2、找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;
3、创建一个数据库MYSQLDATA : mysql> CREATE DATABASE MYSQLDATA;
4、选择你所创建的数据库 :mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
5、查看现在的数据库中存在什么表 :mysql> SHOW TABLES;
6、创建一个数据库表 :mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
7、显示表的结构: mysql> DESCRIBE MYTABLE;
8、往表中加入记录 : mysql> insert into MYTABLE values ("hyq","M");
9、用文本方式将数据装入数据库表中(例如D:/mysql.txt) :mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;
10、导入.sql文件命令(例如D:/mysql.sql)
mysql> use database;
mysql> source d:/mysql.sql;
11、删除表 : mysql> drop TABLE MYTABLE;
12、清空表 :mysql> delete from MYTABLE;
13、更新表中数据 : mysql> update MYTABLE set sex="f" where name=hyq;
此外,Linux下经常使用的命令:
1:导入数据库备份文件的方法:
root: mysql –u数据库帐户 –p密码 数据库名 < .sql备份文件
2:MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
mysql> grant all privileges on 数据库名.* to 用户名@localhost identified by “密码”;identified by “密码”;
3:清空文件内容:
cat /dev/null > 文件名
4:添加帐户:
useradd 用户名 –d 目录名 –s /sbin/nologin(不允许该用户直接登录服务器)
5:设置帐户密码
passwd 用户名
特别注意:
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD(newpassword) where User=root;