分类目录归档:MySQL

mysql编码

1、查看mysql相关编码

--查看mysql数据库所支持的编码
show character set;
--查看当前变量中的一些编码情况
show variables like 'character%';
--查看某个数据库的编码
SHOW CREATE DATABASE db_name;
--查看某个表的字符集
SHOW CREATE TABLE table_name;
SHOW TABLE STATUS LIKE 'table_name';

2、参数说明:
character_set_client:客户端来源数据使用的字符集
character_set_connection:连接层字符集
character_set_database:当前选中数据库的默认字符集
character_set_filesystem:文件保存格式
character_set_results:查询结果字符集
character_set_server:默认的内部操作字符集
character_set_system:系统元数据(字段名等)字符集
character_sets_dir:mysql编码文件放置位置

3、MySQL中的字符集转换过程
1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
• 使用每个数据字段的CHARACTER SET设定值;
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。
3. 将操作结果从内部操作字符集转换为character_set_results。

4、一些小技巧
1)通过使用set names utf8(gbk)等编码修改命令在database级别,可以实现修改
character_set_client、character_set_connection、character_set_results操作
2)要正常显示数据,要确保display的平台的编码和character_set_results中的编码一致,如:默认情况,win的dos中编码为gbk,linux的shell下编码为utf8,如果要使用同一个数据库能够都正常显示,需要使用set names utf8(gbk)等操作
3)MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾,例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;

5、my.cnf/my.ini中相关参数设置
default_character_set设置只影响mysql命令连接服务器时的连接字符集
init_connect=’SET NAMES utf8′非超级用户建立连接时执行set names utf8
init_connect=’set collation_connection=utf8_general_ci’

在[client] 中设置
default-character-set=utf8
影响下面三个参数
character_set_client
character_set_connection
character_set_results

在[mysqld]中设置
default-character-set=utf8
影响下面两个参数
character_set_database
character_set_server

这样mysql就可以基本上使用utf8编码工作了,如果客户端是gbk编码的,可以使用set names gbk进行临时修改

发表在 MySQL | 一条评论

mysql数据库备份加强版

上次写过一个mysql数据库windows版的脚本备份,虽然能够实现功能,但是不是很完美,还有bug,就是备份后为了保存备份记录,dos窗口没有被关闭,这样导致如果没有人工的干预,就不能进行第二天的备份。现在的设计思想是把备份数据库时的相关信息,保存到日志文件中,任何维护人员只要查看log信息就可以知道备份情况,而不用每天登录服务器,查看dos信息,然后关闭才能够进行下一天的备份,使用该备份后,工作人员只要一段时间登录服务器查看log信息就可以知道备份的情况,而且可以通过远程直接telnet就可以查看,比起以前大为方便,人性化了
采用两个脚本实现(本次使用本blog的数据库说明)
1、执行备份操作

@echo off
echo WordPress数据库备份
echo.
echo 程序启动时间:%date% %time%
echo.
set "Name=%date:~,4%%date:~5,2%%date:~8,2%_%random%"
set "Path=e:\MySql_BackUp\wp_%Name%"
md %Path%
echo 保存备份数据库文件路径为:%Path%
echo ***********************************************************
echo.
echo %time%:开始备份wordpress数据库……
echo.
e:\AppServ\MySQL\bin\mysqldump --opt -u root --password=4020894 -F -B --default-character-set=utf8 wordpress > %Path%\wordpress.sql
echo 文件:%Path%\wordpress.sql
echo %time%:wordpress数据库备份完成
echo. 
echo ***********************************************************
echo 程序结束时间:%date% %time%
echo.
echo ***********************************************************
echo.
echo.
echo.

执行wordpress数据库备份
2、执行保存Log的脚步

C:\script\wordpress.bat >>E:\MySql_BackUp\Log\wp_%date:~,4%%date:~5,2%%date:~8,2%.log
exit

日志是以天为单位保存,存取追加方式保存(及一天内如果有多长备份,会被追加到日期为文件名的日志文件中)
3、添加为windows计划任务中
把保存日志的脚本文件设置到windows的计划任务中,设置相关执行时间,即可实现自动化无需人工干预,保存日志的mysql数据库备份
上一个版本的mysql数据库备份地址为:
mysql数据管理

发表在 MySQL | 评论关闭

mysql 用户管理

1、创建用户:
create user fei@’localhost’ identified by ‘fei’;
note:该用户没有授予任何访问权限,如果不加@’localhost’默认为“@%”

2、用户授权:
grant delete on test.* to fei@’localhost’ with grant option;
note:1)*表示test的任何对象,如果是*.*表示数据库中的所有对象
2)with grant option 表明fei用户可以把相关权限授给其他用户

3、权限回收:
revoke delete on test.* from fei@’localhost’;

4、创建用户授权一起实现
grant select,insert,update,delete on *.* to ‘fei2′@’%’
identified by ‘fei2′ with grant option;
note:在mysql中,如果@后面的登录范围不同,帐号可以一样

5、直接使用insert建立用户
insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)
values(‘localhost’,’xff’,password(‘xff’),”,”,”);
FLUSH PRIVILEGES;
note:1)必须要加上ssl_cipher,x509_issuer,x509_subject三列,以为其默认值不为空(数据库版本为:5.0.51b)
2)FLUSH PRIVILEGES重载授权表,使权限更改生效
3)mysql是通过User表,Db表,Host表,Tables_priv 表,Columns_priv 表这5张表实现用户权限控制,均可以通过直接对这些表的操作以达到对用户的管理

6、删除用户:
drop user xff@localhost;(@不加默认为“%”)

7、授权精确到列:
grant select (cur_url,pre_url) on test.abc to fei@localhost;

8、修改root密码:
update mysql.user set password=password(‘passw0rd’) where user=’root’;
FLUSH PRIVILEGES;

发表在 MySQL | 评论关闭