图片 7

mysql 开发进阶篇系列 27 数据库字符集设置

Posted by

  在安装完数据库后,使用汉字插入到表中,会报错,需要修改字符集类型,如下图所示:

1.创建用户并授权

-- 插入汉字时报错
INSERT INTO User2 VALUES('张三')

一般新建数据库都需要新增一个用户,用于程序连接,这类用户只需要insert、update、delete、select权限。

    图片 1

新增一个用户,并授权如下:

-- 查看字符集
SHOW VARIABLES LIKE ‘character%’;

(1)grant select,delete,update,insert on *.* to admin@’192.168.0.%’
identified by ‘123456’;

   如下图所示: character_set_database=iatin1 需要改成utf8或gbk

flush privileges;

 图片 2
  打开my.cnf文件,修改参数,再重启
  图片 3
 重启后,再查看SHOW VARIABLES LIKE
‘character%’。如下所示:character_set_filesystem不用改,默认使用二进制。
  图片 4

(2)新建用户再授权

  新建一个数据库test2, 字符集默认显示[default]不用改,
在库里新建一个表user1,如下图所示
  图片 5

create user ‘test’@’localhost’ identified by ‘test’;

-- 插入汉字成功
INSERT INTO  user1 VALUES('张三')

GRANT ALL ON db1.* TO ‘test’@’localhost’;

    图片 6

2.创建数据库并指定字符集

  对于之前已有的test库,则需要把该库之前的默认字符改过来,如下图所示:
    图片 7

create database test DEFAULT CHARACTER SET utf8 COLLATE
utf8_general_ci;

3.显示数据库

show databases;

show databases like ‘%test%’;

显示当前数据库

select database();

4.使用数据库

use test;

显示当前用户

select user();

5.删除数据库

drop database test;

6.删除用户(系统多余账号)

(1)drop user “user”@主机域(主机名大写删不掉)

(2)delete from mysql.user where user = ‘root’ and host = ‘test’;

flush privileges;

7.查看数据库版本

select version();

8.查看当前时间

select now();

9.查看用户列表

select user,host from mysql.user;

10.查看用户权限

show grants for test@localhost;

11.授权主机远程连接数据库

 

12.企业环境授权

(1)对于web连接用户授权尽量采用最小化原则,很多开源软件
还需要create,drop等比较危险的权限

(2)生成数据库表后,要收回create/drop授权

revoke insert on *.* FROM ‘test’@’localhost’;

生产环境针对主库(写为主读为辅)用户的授权:

后面再说

13.建表

create table student(

id int(4) not null,

name char(20) not null,

age tinyint(2) not null default ‘0’,

dept varchar(16) default null

)ENGINE=InnoDB DEFAULT CHARSET=uft8;

14.增删表字段

alter table test add a varchar(20);

15.更改表明

rename table test to test1;

16mysql插入中文不乱码的5种方法

(1)登录mysql,先做”set names latin1″,然后再执行语句或语句文件

(2)在sql文件中指定set names latin1;然后登录mysql,通过如下命令执行

mysql>source test.sql

(3)在sql文件中指定set names latin1;然后通过mysql命令导入数据

mysql -uroot -poldboy123 oldboy<test.sql

mysql -uroot -poldboy123 oldboy -e “set names latin1;select * from
oldboy.test”;

(4)通过指定mysql命令的字符集参数实现–default-character-set=latin1

cat test.sql

INSERT INTO student VALUES (9,’张三’);

mysql -uroot -poldboy123 –default-character-set=latin1
oldboy<test.sql

(5)在配置文件里设置客户端及服务端相关参数

更改my.cnf客户端模块的参数,可以实现set names latin1的效果,并且永久生效

[client]

default-character-set=latin1

提示:无需重启服务,退出重新登录就生效。相当于set names latin1;

更改my.cnf参数

[mysqld]

default-character-set=latin1适合5.1及以下版本

character-set-server=latin1适合5.5

不乱码的思想:linux,客户端,服务端,库,表,程序保证字符集统一

不乱码的思想:建议中英文环境选择utf8

建库:create database oldboy DEFAULT CHARACTER SET UTF8 COLLATE
utf8_general_ci

建表:一般情况下,建库是指定字符集,表不用管

create table student

(id int(4) not null auto_increment,

name char(20) not null,

primary key(id )

)ENGINE= InnoDB AUTO_INCREMENT=10 DEFAULT CHARATERSET=UTF8;

查看校对规则show character set;

查看状态

show variables;

show global status;

set global key_buffer_size=

show variables liek ‘key_buffer%’

作为作业总结

mysqldump

mysqlbinlog

mysql

mysqladmin

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注