1.创建用户并授权
一般新建数据库都需要新增一个用户,用于程序连接,这类用户只需要insert、update、delete、select权限。
新增一个用户,并授权如下:
(1)grant select,delete,update,insert on *.* to admin@'192.168.0.%' identified by '123456';
flush privileges;
(2)新建用户再授权
create user 'test'@'localhost' identified by 'test';
GRANT ALL ON db1.* TO 'test'@'localhost';
2.创建数据库并指定字符集
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
 
客户端字符集
character_set_client
character_set_connection
character_set_results
set names就该更改了上面三个变量的值
 
确保mysql数据库插入数据不乱吗解决方案
统一mysql数据库客户及服务端字符集
1.通常,mysql数据库的下面几个字符集(客户端和服务端)统一成一个字符集,才能确保插入的中文数据可以正确输出。即mysql>show variables like 'character_set%' 结果中的字符集设置尽量统一。当然linux系统的字符集也要尽可能和数据库字符集统一。
2、show variables like 'character_set%';命令结果输出如下
variable_name |value
1character_set_client |latin1 #客户端字符集,set names latin1;
2character_set_connection |latin1 #连接字符集,set names latin1;
3character_set_database |latin1 #数据库字符集,配置文件制定或建库建表制定。
4character_set_results |latin1 #返回结果字符集,set names latin1;
5character_set_server |latin1 #服务器字符集,配置文件制定或建库建表制定。
其中,1、2、4 3个参数默认情况采用linux系统字符集设置,人工登录数据库执行“set names latin1“以及mysql制定字符集登录操作,都是改变了mysql客户端的client、connection、results3个参数的字符集为latin1,从而解决了插入中文乱码的问题,这个操作也可以通过更改my.cnf实现mysql客户端的字符集,配置方法如下。
[client]
default-character-set=latin1
提示:无需重启服务,退出重新登录就生效。此参数相当于,登录后执行set names latin1;
[mysqld]
character-set=latin1
提示:需要重启服务
更改的参数是character_set_database和character_set_server
说明:
default-character-set=gbk <=适合5.1及以前的版本
character-set-server=gbk <=适合5.5
结论:
不乱码的思想:建议中英文环境选择utf8
1、linux系统
#cat /etc/sysconfig/i18n
LANG="zh_CN.utf8"
提示:linux客户端也要更改字符串,例如:SecureCRT->
2、mysql客户端
临时:set names utf8;
永久:更改my.cnf客户端模块的参数,可以实现set names utf8的效果,并且永久生效。
[client]
default-character-set=utf8
提示:无需重启服务,退出重新登录就生效,相当于set names utf8;
3.mysql数据库的服务端
更改my.cnf
[mysqld]
default-character-set=utf8 适合5.1及以前的版本
character-set-server=utf8 适合5.5
4、mysql数据库中建库建表
建库: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;
 
更改生产线上Mysql数据字符集的方案
更改数据库/表的字符集
数据字符集修改步骤
对于已有的数据库想修改字符集不能直接通过"alter database character set *"或“alter tablename character set *"这两个命令都没哟更新已有记录的字符集,而只是对新创建的表或者记录生效。
已经有记录的字符的调整,必须先将数据导出,讲过修改字符集后重新导入后才可完成。
1.导出表结构
msyqldump -uroot -p --default-character-set=latin1 -d dbname>alltable.sql
--default-character-set=gbk表示以GBK字符集进行连接 -d 只导表结构
 
2.编辑alltable.sql将latin1改成GBK
3.确保数据库不再更新,,导出所有数据
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-charater-set=latin1 dbname>alldata.sql
参数说明:
--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出前CACHE到内存中
--no-create-info:不创建CREATE TABLE语句
--extended-insert:使用包括几个VALUES列表的多行INSERT语法,这样文件更小,IO也小,导入数据时会非常快
--default-charater-set=latin1 #按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码
4.打开alldata.sql将set names latin1修改成 set names GBK;(或者修改系统的服务端和客户端)
5.建库
create database dbname default charset gbk;
6.创建表,执行alltable.sql
mysql -uroot -p dbname<alltable.sql
7.导入数据
mysql -uroot -p dbname<alldata.sql
 
总结:Latin1->utf8
1、建库及建表的语句导出,sed批量修改为utf8
2、导出所有数据
3、修改mysql服务端和客户端编码为utf8
4、删除原有的库表及数据
5、导入建库及建表的语句
6、导入mysql的所有数据
 
 
 
 
 
 

mysql基础运维的更多相关文章

  1. 有赞MySQL自动化运维之路—ZanDB

      有赞MySQL自动化运维之路—ZanDB 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管理等任务都对DBA产生了更高的要求,单纯的凭借记忆力去管理那几十 ...

  2. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

  3. MySQL数据库运维课程

    MySQL数据库运维课程 http://www.dataguru.cn/article-4834-1.html?union_site=comm100 课程大纲 第一课:机器选型.系统规划 第二课:安装 ...

  4. 有赞 MySQL 自动化运维之路 — ZanDB

    转自:https://tech.youzan.com/youzan-mysql-auto-ops-road/ 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管 ...

  5. Inception介绍(MySQL自动化运维工具)

    Inception介绍 GitHub:https://github.com/mysql-inception/inception 文档:https://mysql-inception.github.io ...

  6. MySQL 日常运维业务账号权限的控制

    在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写 ...

  7. MySQL数据库运维的五大指标

    如何评价一个公司数据库运维水平的高低?用什么来进行横向与纵向对比?自动化平台建设的目标是什么?必须有相应的指标体系来指导,此指标体系必须满足以下条件: • 可以用数字来测算和衡量 • 最终指标,而不是 ...

  8. mysql日常运维与参数调优

    日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事 ...

  9. EasyNVR智能云终端硬件盒子x86版自我维护之摄像机网页直播系统基础运维

    背景分析 随着EasyNVR软件为越来越多的用户接受和使用,我们也致力于用户的需求收集和需求的调研,发现一部分用户有关于硬件设备的需求,加之我们推出的免费产品EasyNVS云管理平台,可以说用户自己搭 ...

随机推荐

  1. 数据库SQL优化大总结之百万级数据库优化方案(转)

    add by zhj: 作者没有指定是哪个数据库,这只是一个近似通用的总结.对于某个特定的数据库,有些条目可能并不适用. 原文:http://www.cnblogs.com/yunfeifei/p/3 ...

  2. Python将科学计数法数值转换为指定精度浮点数

    Python将科学计数法数值转换为指定精度浮点数 In [20]:money = 1190000.0 In [21]: traded_maket_value = 13824000000 In [22] ...

  3. Git学习-->GitLab如何修改时区?

    一.背景 今天有同事在GitLab上查看时间的时候,发现GitLab上显示的时间和提交的时间不一致. 本地时间现在为:2017-11-28 11:43 查看本地代码提交的时间为:2017-11-28 ...

  4. 用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面

    用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面 1.什么是跨域以及产生原因 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,或是a页面为ip地 ...

  5. 解决下载ftp文件过程中,浏览器直接解析文件(txt,png等)的问题

    搭建了一个ftp服务器,供用户进行上传下载,在下载过程中发现,一些文件,例如txt,jpg,png,pdf等直接被浏览器解析了.在浏览器中显示其内容,没有下载. 下面通过网上查询得到一些解决方法: 最 ...

  6. PAT 1088 Rational Arithmetic[模拟分数的加减乘除][难]

    1088 Rational Arithmetic(20 分) For two rational numbers, your task is to implement the basic arithme ...

  7. Web前台学习总结

    前台的技术有很多种,流行的框架也是枚不胜举,在这里我们只讨论html,css,js这些基本的技术,相信大家如果掌握了这些最基本的技术,其他的技术也就会使用了. 下面是一个案例的形式来讲解上述的技术. ...

  8. html结构和标签

    <!DOCTYPE html><meta charset="utf-8"><header>表示页面的一个内容区块,或整个页面的标题</he ...

  9. Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3) Solution

    A. Kitchen Utensils Water. #include <bits/stdc++.h> using namespace std; #define N 110 int n, ...

  10. cookie的存取删

    存: document.cookie = "name=Kevin;expires="+new Date().getDate()+7; //有效期7天 取: function Get ...