MySQL 建库、建用户及建表事项
1,MySQL建库语句比较简单,一句话:
create database tppamltest3
2,创建用户及授权:
insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","用户名",password("密码"),"","","");
flush privileges;
grant all privileges on tppamltest3.* to 用户名@localhost identified by '密码';
flush privileges;
其中授权语句給用户分配了全部权限,具体其他看百度。
3,建表脚本:
use tppamltest3; SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for cfg_auto_mend
-- ----------------------------
DROP TABLE IF EXISTS `cfg_auto_mend`;
CREATE TABLE `cfg_auto_mend` (
`ID` varchar(32) NOT NULL,
`MEND_SQL` text,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注意最后有默认编码设置。
---------------------------完成-----------------------------
=================================
一些异常情况的处理
=================================
乱码问题:
首先,shell里可以查看MYSQL目前编码
show variables like '%character%';
+--------------------------+-------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | E:\anzhuan\MySQL5.5\share\charsets\ |
+--------------------------+-------------------------------------+
8 rows in set (0.00 sec)
可以更改
set character_set_client = 字符集
只要编码保持一致就不会出现乱码。
================================一下内容为摘抄========================================
1.系统编码
>show variables like '%character%';
mysql> show variables like '%collation%';
改变系统编码:修改my.cnf(/etc/my.cnf)中默认的编码选项[mysqld]下添加default-charcter-set=utf8 mysql 5.5以上版本换成了character-set-server=utf8 重新启动mysql
命令形式 mysql> SET NAMES 'utf8'; 重新启动mysql的时候所有的设置将失效
2.数据库编码
查看数据库编码: mysql> show create database db_name;
修改数据库编码: mysql> ALTER DATABASE db_name ####这里修改整个数据库的编码
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci;
在在建数据库的时候指定编码:
mysql> CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci ;
3.数据库表和字段编码
查看数据库表和字段编码: mysql> show create table table_name;
>ALTER TABLE table_name DEFAULT CHARACTER SET utf8;
修改字段编码: mysql> ALTER TABLE `table_name` CHANGE `dd` `dd` VARCHAR( 45
) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
该命令就是将MYSQL数据库table_name表中 dd的字段编码改为utf8
4.命令行下插入汉字时指定编码:mysql> set names utf8; 有时候这一句很关键!
mysql> insert into test(name) values('王东伟');
总之,不管采用那一种编码方式,只要做到完全统一将能达到相应的效果。
-------------------------------------------------------------------分隔-----------------------------------------------------------------------
在查询结果中可以看到mysql 数据库系统中客户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集设置在这里,文件系统字符集是固定的,系统、服务器的字符集在安装时 确定,与乱码问题无关。乱码的问题与客户端、数据库连接、数据库、查询结果的字符集设置有关。
*注:客户端是看访问mysql 数据库的方式,通过命令行访问,命令行窗口就是客户端,通过JDBC 等连接访问,程序就是客户端我们在向mysql 写入中文数据时,在客户端、数据库连接、写入数据库时分别要进行编码转换。在执行查询时,在返回结果、数据库连接、客户端分别进行编码转换。现在我们应该 清楚,乱码发生在数据库、客户端、查询结果以及数据库连接这其中一个或多
个环节
接下来我们来解决这个问题
在登录数据库时,我们用mysql --default-character-set=字符集-u root -p 进行连接,这时我们
再用show variables like '%char%';命令查看字符集设置情况,可以发现客户端、数据库连接、
查询结果的字符集已经设置成登录时选择的字符集了
如果是已经登录了,可以使用set names 字符集;命令来实现上述效果,等同于下面的命令:
set character_set_client = 字符集
set character_set_connection = 字符集
set character_set_results = 字符集
如果是通过JDBC 连接数据库,可以这样写URL:
URL=jdbc:mysql://localhost:3306/abs?useUnicode=true&characterEncoding=字符集
JSP 页面等终端也要设置相应的字符集
数据库的字符集可以修改mysql 的启动配置来指定字符集,也可以在create database 时加上
default character set 字符集来强制设置database 的字符集
通过这样的设置,整个数据写入读出流程中都统一了字符集,就不会出现乱码了
为什么从命令行直接写入中文不设置也不会出现乱码?
可以明确的是从命令行下,客户端、数据库连接、查询结果的字符集设置没有变化
输入的中文经过一系列转码又转回初始的字符集,我们查看到的当然不是乱码
但这并不代表中文在数据库里被正确作为中文字符存储
举例来说,现在有一个utf8 编码数据库,客户端连接使用GBK 编码,connection 使用默认
的ISO8859-1(也就是mysql 中的latin1),我们在客户端发送"中文"这个字符串,客户端
将发送一串GBK 格式的二进制码给connection 层,connection 层以ISO8859-1 格式将这段
二进制码发送给数据库,数据库将这段编码以utf8 格式存储下来,我们将这个字段以utf8
格式读取出来,肯定是得到乱码,也就是说中文数据在写入数据库时是以乱码形式存储的,
在同一个客户端进行查询操作时,做了一套和写入时相反的操作,错误的utf8 格式二进制
码又被转换成正确的GBK 码并正确显示出来。
MySQL 建库、建用户及建表事项的更多相关文章
- dbca建库sys用户被锁
奇怪问题:dbca建库sys用户被锁, 点击密码管理报账户被锁 而且在服务器上无法进行操作系统验证登陆,经过一番检查发现oracle用户和grid用户没有在dba组里 解决: 1.把oracle用户和 ...
- 定制Asp.NET 5 MVC内建身份验证机制 - 基于自建SQL Server用户/角色数据表的表单身份验证
背景 在需要进行表单认证的Asp.NET 5 MVC项目被创建后,往往需要根据项目的实际需求做一系列的工作对MVC 5内建的身份验证机制(Asp.NET Identity)进行扩展和定制: Asp.N ...
- Vertica 安装,建库,新建测试用户并授予权限,建表,入库
测试环境:RHEL 6.4 + Vertica 6.1.3-7 需求:搭建Vertica数据库3节点的测试环境,建立测试用户,建表,测试数据入库. 1.各节点关闭防火墙和SELinux,配置主机名,I ...
- 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式
导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...
- Oracle 11g R2创建数据库之手工建库方式
在之前的博文当中梳理了关于DBCA静默方式创建数据库的过程,本文就手工通过SQL*PLUS客户端采用CREATE DATABASE语句创建数据库.这种建库方式就是完全使用手工SQL语句创建数据库,通常 ...
- 基于ArcEngine的空间数据通用建库软件介绍
最近花了点时间把之前的空间数据入库功能进行了完善,在这里做一个简单的介绍,也希望大家给提点意见和建议,我的目标是做一个好用.易用.通用.稳定的入库程序. 1.软件特点: 基于模板(方案)的数据更新 ...
- 【Oracle】 手工建库
操作系统:OEL 5.6 数据库版本:Oracle11gR2 11.2.0.4.0 新建数据库名称:lgr 1 生成pfile和口令文件 1)生成pfile文件,在模板文件init.ora中提取 [ ...
- Mysql建库建用户建表等常用命令
格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...
- MySQL建库建表
一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...
随机推荐
- 一种json生成html的思路
输入: [{ tag:"ul", attribute:{ class:"father6" }, property:{ className:"fathe ...
- Flex打印功能FlexPrintJob调用
收藏下很详细的学习资料 http://wenku.baidu.com/view/b3d4f40702020740be1e9bf8.html import mx.printing.FlexPrintJo ...
- iOS - Swift 基本语法
前言 Swift 全面支持 Unicode 符号. Swift 中的定义和实现是在同一个单元中的,通常一个 Swift 源代码单文件是以 ".Swift" 结尾的. Swift 不 ...
- [转]Java代码(性能)优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
- 【Todo】Java新技术学习笔记-from某技术分析
看到这篇文章:http://mt.sohu.com/20160806/n462923089.shtml <十余年技术大牛告诉你,这些Java新技术不可错过> 虽然讲的比较泛,但是里面提到的 ...
- swift语言学习之UITableView分割线左边到头的解决
此方法兼容ios 7.8.9 // 在tableView创建地方设置 if tableView!.respondsToSelector("setSeparatorInset:") ...
- android瀑布流效果(仿蘑菇街)
Android 转载分享(10) 我们还是来看一款示例:(蘑菇街) 看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此. ...
- jQuery的单选,复选,下拉
单选 获取 ($('input:first').attr('vlaue')); 选中 ($('input:checked').val()); 属性值的设置$().val(属性值)$('input:fi ...
- (x&y) + ((x^y)>>1)即x和y的算数平均值
(x&y) + ((x^y)>>1)相当于(x+y)/2 (x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值 ...
- appium支持中文输入
Appium 1.3.3以上.java:capabilities增加下面两项:capabilities.setCapability("unicodeKeyboard", " ...