`

mysql字符集最终解决

    博客分类:
  • java
阅读更多

用户命令
date加减语法

装confluence,使用mysql乱码,查出是mysql编码设置问题:

最终解决方案:
mysql UTF8设置:

vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8  (数据库缺省以utf8存储)
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

[client]
default-character-set=utf8 (客户端缺省以utf8存储)

重启mysql

登陆mysql,查看:
show variables like 'character%';

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


2010年1月18日 更新:
导入导出数据:
mysqldump db  > table.sql
可选参数:
-n : --no-create-db
-t : --no-create-table
-d : --no-data

数据导出:mysqldump --default-character-set=gbk db > db.sql
数据导入:mysql --default-character-set=gbk db < db.sql
执行mysqldump sql:mysqldump -w "fmodify_date > '2010-4-10'"
执行指令后导出txt:mysql -uroot -p123 db_fund -e "select * from t_fund_bind limit 0,10" > bind.sql

修改字符集:
alter database da_name default character set 'gbk'
set names 'gbk'

set names gbk告诉mysql,接下来的数据将以该编码方式传输,等同于:
SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = gbk;

通过status指令查看当前的编码:
mysql> status;
    Server characterset:    latin1
    Db     characterset:    gbk
    Client characterset:    gbk
    Conn. characterset:    gbk

7)导入我们转换成gbk后的文件
mysql> source base_user_gbk.sql;

用户命令:

mysql> CREATE USER yy IDENTIFIED BY '123';
yy表示你要建立的用户名,后面的123表示密码
上面建立的用户可以在任何地方登陆。

如果要限制在固定地址登陆,比如localhost 登陆:
mysql> CREATE USER yy@localhost IDENTIFIED BY '123';

mysql> GRANT ALL PRIVILEGES ON *.* TO user@localhost

grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"


修改密码:
mysql> grant   all   privileges   on   pureftpd.*   to   koko@localhost   identified   by   'mimi'; 

flush:
mysql> flush privileges;


查看用户信息:
mysql> select host,user from mysql.user;


sql inject:
1.使用PrepareStatement+bind-variable.
2.使用程序转换特殊字符,如mysql c api: mysql_real_escape_string()
3.自行编写函数进行校验


tomcat encode:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
jetty encode:http://docs.codehaus.org/display/JETTY/International+Characters+and+Character+Encodings

date加减语法
date + INTERVAL expr unit
select current_date() - INTERVAL 1 DAY;
where fdate = current_date()- INTERVAL 2 DAY

mysql insert or update的替代做法
insert t_app_pv (f_app_id,f_pv) values (?,?) on duplicate key update f_pv=?

insert select 语法

SELECT * FROM t_cft_fund_log t order by f_operation_date limit 0,10 ;

SELECT * FROM t_cft_fund_log_history  order by f_operation_date desc limit 0,10;

insert into t_cft_fund_log_history select * from t_cft_fund_log  where f_operation_date < '2010-10-01';

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables. For example:

INSERT INTO tbl_temp2 (fld_id)
  SELECT tbl_temp1.fld_order_id
  FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

 

 

 

mysqldump导出数据不带时区信息

http://blog.kylinhome.net/2010/09/72

KylinHuang Post in 技术,Tags: MySQL, 时间

发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时

 

后来发现mysqldump的选项--tz-utc

  • --tz-utc

    Add SET TIME_ZONE='+00:00' to the dump file so that TIMESTAMP columns can be dumped and reloaded between servers in different time zones. Without this option, TIMESTAMP columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change. --tz-utc also protects against changes due to daylight saving time. --tz-utc is enabled by default. To disable it, use --skip-tz-utc. This option was added in MySQL 5.0.15.

    用了--skip-tz-utc果然就OK了。

    不过其实不用管这个啦,因为用mysql < … 的时候会自动再加上时区信息,因为你可以看到导出的sql文件中有

    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    ...
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
  • 分享到:
    评论

    相关推荐

      MySQL-5.0.51a和EMS SQL Manager 2005 中文为问号等乱码的最终解决方案

      总结来说,解决MySQL中的中文乱码问题,关键在于正确配置MySQL的字符集,包括服务器端和客户端的设置。在使用像EMS SQL Manager 2005这样的工具时,可以辅助我们更直观地检查和修改这些设置,从而确保数据的正确显示...

      解决Mysql数据库在web开发中乱码问题

      在Web开发中,尤其是使用MySQL...总之,解决MySQL数据库在Web开发中的乱码问题,关键在于保持字符集设置的一致性和正确性,从源头做起,覆盖数据处理的全过程,才能从根本上消除乱码现象,提升用户体验和系统的稳定性。

      修改mysql编码的一种方法

      1. **登录数据库时设置字符集**:使用命令`mysql --default-character-set=字符集 -u root -p`登录数据库,可以统一客户端、数据库连接、查询结果的字符集。 - 如果已经登录,则可以通过`SET NAMES 字符集;`或等效...

      MySQL数据库考试练习题 mysql试题集 共28页.pdf

      2. **数据类型**:熟悉MySQL支持的各种数据类型,如整型(`INT`)、浮点型(`FLOAT`)、字符串型(`VARCHAR`)、日期时间型(`DATE`, `TIME`, `DATETIME`)等,并了解它们的区别和适用场景。 3. **SQL语法基础**:...

      乱码问题解决

      ### 乱码问题解决方案 #### 一、charset与pageEncoding的区别及应用场景 在Web开发过程中,尤其是...对于MySQL数据库中的乱码问题,也需要对数据库连接、表字段的字符集进行仔细检查,并在前端和后端统一字符集设置。

      Toad-for-MySQL-Freeware_6.01

      它提供了实时的性能仪表板,可以监控数据库的CPU使用、内存消耗、I/O情况等关键指标,帮助识别和解决性能问题。通过性能分析,用户可以定位慢查询,对其进行优化,提高数据库的整体效率。 备份和恢复也是数据库管理...

      网页中文乱码完美解决方案.pdf

      MYSQL 可以设置服务器级字符集、数据库级字符集、数据表级字符集、表列的字符集,实际上,最终使用字符集的地方是存储字符的列。 解决中文乱码的方法 1. 文件编码:每个文件在保存的时候都可以选择以什么编码保存...

      Mysql从入门到精通.pdf

      解决方法是在建立数据库或表时指定字符集为utf8,并在连接数据库时确保客户端的字符集设置正确。 9. IP连接控制:可以为MySQL用户设置只能从特定的IP地址访问数据库,增强安全性。 10. SQL语句的使用:包括基础的...

      MySql修改数据库编码为UTF8避免造成乱码问题

      最终,理想的状态是所有字符集变量如`character_set_client`、`character_set_connection`、`character_set_database`、`character_set_filesystem`、`character_set_results`、`character_set_server`、`character_...

      Java Web程序开发中字符乱码的原因与解决办法.pdf

      为了解决这个问题,我们首先要了解字符集和字符编码的相关知识,然后分析字符乱码的原因,并最终找出相应的解决办法。 字符集是字符的集合,它包含了计算机能够处理的文本数据。常见的字符集有ASCII字符集、Unicode...

      MySQL 线上运维常见错误、疑难问题录

      4. **字符集设置问题**:最终发现本地环境中的MySQL客户端和服务端的字符集设置为GBK,而服务器端默认使用Latin字符集。 **解决方案**: 为了确保数据能够成功导入,可以通过修改MySQL配置文件`my.cnf`中的字符集...

      MySQL中文乱码问题的解决第1/2页

      首先,我们需要理解MySQL字符集的工作原理。MySQL在多个层次上有默认字符集设定,包括服务器级(`character_set_server`)、数据库级(`character_set_database`)、表级以及列级。当创建新的数据库或表时,如果没有...

      PHP和MySQL Web开发第4版pdf以及源码

      4.6.2 字符集和类 4.6.3 重复 4.6.4 子表达式 4.6.5 子表达式计数 4.6.6 定位到字符串的开始或末尾 4.6.7 分支 4.6.8 匹配特殊字符 4.6.9 特殊字符一览 4.6.10 在智能表单中应用 4.7 用正则表达式查找子...

      jsp反向工程总结

      - 确认MySQL数据库的默认字符集设置是否为UTF-8,可以在创建数据库时指定字符集,例如`CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;`。 2. **统一表和字段字符集:** - 在创建表时指定...

      为何不要在MySQL中使用UTF-8编码方式详解

      为了解决这个问题,MySQL官方在2010年引入了一个新的字符集utf8mb4。这个字符集可以编码全部的Unicode字符,包括四字节的字符。从MySQL 5.5.3版本开始,utf8mb4成为了默认的4字节UTF-8字符集。通过将数据库表的字符...

      Linux下进行MYSQL编程时插入中文乱码的解决方案

      2. **MySQL字符集配置**:MySQL内部有一套字符集配置体系,包括服务器级、数据库级、表级和列级四个层次。这些配置决定了MySQL如何解析、存储和显示文本数据。 3. **应用程序端编码处理**:编写程序时也需要指定...

      VB6.0连接MySQL数据库.pdf

      文档中可能还会有对VB6.0连接MySQL数据库过程中遇到的具体问题及解决方法的介绍,但由于文档内容是OCR扫描出的文本,存在技术上的识别错误或漏识别情况,因此需要结合实际情况进行理解并修正。在理解这些知识点时,...

    Global site tag (gtag.js) - Google Analytics