用户管理与字符集

一、用户管理

用户名的概念

用户名是由两部分组成的

user和host

1.1 创建用户

create user 'yysue'@'192.168.5.38' identified by 'yysueyysue';
create user 'yysue'@'srv%.yysue.net' identified by 'yysueyysue';
flush privileges; 结合/etc/hosts使用,对域名授权
srv1.yysue.net 192.168.5.11
srv2.yysue.net 192.168.5.12 saltstack,ansible

查看系统账号

select user, host, password from mysql.user;
select user, host, authentication_string from mysql.user;

查看账号的权限

show grants for user@host

数据库加固命令,只在初始化数据库时执行一次

delete from mysql.user where user!='root' or host!='localhost';
truncate table mysql.db;
drop database test;

root@localhost与root@127.0.0.1区别

localhost只能通过unix_domain登录,socket

127.0.0.1只能通过tcp方式登录
mysql -h 127.0.0.1 -uroot --protocol=tcp

用户迁移时,密码怎么迁移

-- 验证用户密码
select password('yysueyysue'); create user 'a'@'ip' identified by password '加密后的hash串'; 1.查看用户有什么权限
2.查一下hash串

删除账号

drop user aaa;
drop user aa1@'ip';

用什么工具连接mysql

mysql命令

SQLyog

workbench

查看当前用户

select user();

备一个mysql手册

https://dev.mysql.com/doc/refman/5.6/en/

chm手册

help create user

1.2 授权

移除权限

revoke select on db1.* from yysue@'ip';

授权

grant select on db1.* to 'yysue'@'ip';
grant select on db1.t1 to 'yysue'@'ip';
grant select,update,insert,delete on db1.t1 to 'yysue'@'ip';
flush privileges; 精确匹配原则

查询权限

show grants for root@ip;

回收权限

新建用户精确匹配,使用精确匹配的账户测试

1.3 一个账号连接不上mysql

连接的mysql是否运行,ip地址正确

端口正确

ss替代netstat命令,netstat统计的信息不准确

是否能ping通服务器

账号密码是否正确

是否flush privileges

1.4 应该创建哪些账号

1)读写账号

grant select,update,delete,insert on db1.* to yysue@ip;

2)管理账号

grant all privileges on *.* to root@localhost with grant option;

3)复制用的账号

grant relication slave on *.* to user1@ip identified by 'password';

replication slave > replication client

replication client可以认为用来监控复制的

1.5 注意问题

1)用户名的长度 小于16个字符

2)密码 复杂,可见字符

1.6 MySQL密码忘了

重启数据库

my.cnf [mysqld] 加 skip-grant-tables

不重启数据库

set password for user1@ip = password('password')
help set password update mysql.user set password=password('new-password')
where user = '' and host = '';
flush privileges; mysql.user存储引擎是MyISAM
show create table mysql.user;
复制出去改好密码再复制回来
cp user.* ../user1/
update user1.user set password=password('new-password')
where user='xxx' and host = 'xxx'
cp user.* dst/mysql
chown mysql:mysql
kill -l
重新加载配置
kill -HUP `pidof mysqld`

keypass来帮助记密码

二、字符集

不涉及中文的话,感觉不出来

一般在系统升级,数据迁移时容易出问题

2.1 理解字符集

1)什么是字符集

gbk,utf8,gb2312,latin1

一套符号编码规则

-字符串都必须有相应的字符集

二进制没有字符集

流式传输

校验字符集的概念,以字为单位进行比较

没有检验字符集的概念之前,以字节为单位进行比较

多字节,latin1是单字节,gbk是2字节,utf8是3字节

归类的方法,就是3类

以二进制形式存储,区分大小写, xxx_bin

show charset;

default collation都是以xxx_general_ci结尾

ci是case insensitive的意思,不区分大小写,是指比较的时候不区分大小写

还有一种是xxx_general_cs结尾

cs是case sensitive的意思,区分大小写的

2)好几层字符集

操作系统字符集

echo $LANG
locale -a
i18n
/etc/sysconfig/i18n
updatedb
locate i18n

数据库服务器和数据库MySQL字符集

client 终端字符集
database 数据库字符集
server 服务器的字符集

查看表字符集

查看列字符集

三码同一,服务器,终端,DB级别

db server ->dbname->table->column

物理属性的字符集

连接字符集

结果字符集

3)修改字符集

# 更改客户端字符集
set names utf8;
set global names utf8;

查看

show variables like '%char%';
show global variables like '%char%';

带global全局,不带global是session级别

4)5.5及之前

早期版本的MySQL默认字符集都是latin1

配置文件配置字符集

[mysqld]
character-set-server = utf8

5)常见字符集

gbk/gb2312双字节字符集

gb2312包含于gbk

gbk是gb18030的子集

gbk中日韩

utf8三字节的字符集,万国码,可变长度

ascii 8bit,实际占用7bit

latin1是8bit

2.2 不同字符集进行转换

gbk->unicode->utf8

utf8->unicode->gbk

iconv命令

file 命令

latin1字符集环境:LANG=en_US.ISO_8859_1, CRT:default
gbk字符集环境:LANG=en_US.GBK/zh_CN.GBK, CRT:default
utf8字符集环境:LANG=en_US.UTF-8, CRT:utf-8
mysqldump --where 1=1 limit 10000
screen
time mysql < xxx.sql && mutt xxx

2.3 怎么避免乱码

1)三码统一

服务器端,终端的,DB级的,程序级的

2)真的遇到乱码

想想 我们做过什么

环境发生了什么变换

2.3 gbk&utf8

使用gbk可以省空间,省网络流量

输入为主的网站大多数用utf8,utf8mb4

信息类,新闻站一般用gbk,gb2312

nginx,apache一定要开压缩

压测工具httpwatch

http://wubx.net/mysql-running-change-owner/

三、实验

3.1 验证char能存储多少个字符

drop table if exists t1;
create table t1(name char(30)) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into t1(name) values (repeat('汉', 10));
insert into t1(name) values (repeat('汉', 20));
insert into t1(name) values (repeat('汉', 30));
insert into t1(name) values (repeat('汉', 31));

MySQL用户管理与字符集的更多相关文章

  1. MySQL用户管理及SQL语句详解

    1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...

  2. 【转】MySQL用户管理及SQL语句详解

    [转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...

  3. MySQL(十六)之MySQL用户管理

    一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...

  4. 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理

    库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...

  5. MySQL用户管理、常用sql语句、MySQL数据库备份恢复

    1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...

  6. MySQL 用户管理与权限管理

    MySQL 用户管理与权限管理 -- 操作环境mysql> show variables like 'version';  +---------------+--------+| Variabl ...

  7. Python 42 mysql用户管理 、pymysql模块

    一:mysql用户管理 什么是mysql用户管理 mysql是一个tcp服务器,应用于操作服务器上的文件数据,接收用户端发送的指令,接收指令时需要考虑到安全问题, ATM购物车中的用户认证和mysql ...

  8. Mysql用户管理及权限分配

    早上到公司,在服务器上Mysql的数据库里新建了个database,然后本地的系统里用原来连接Mysql账号admin连这个数据库.结果报错了,大概是这样子的: Access denied for u ...

  9. MySQL用户管理及权限设置

    mysql 用户管理和权限设置 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql ...

随机推荐

  1. canvas实现平铺水印

    欲实现的水印平铺的效果图如下: 从图上看,应该做到以下几点: 文字在X和Y方向上进行平铺: 文字进行了一定的角度的旋转: 水印作为背景,其z-index位置应位于页面内容底部, 即不能覆盖页面主内容: ...

  2. 微信小程序animation动画2种方法

    这里介绍 2 种方法一种是常规的小程序方法操作,另一种是引入动画库 1. 常规动画操作设置 wxml: <view> <view bindtap="clickMe" ...

  3. SpringMVC-注解@RequestParam

    当请求的参数名称与Controller的业务方法不一致时,就需要通过@RequestParam注解进行显示的绑定 1.value:映射参数 @RequestMapping("/report1 ...

  4. python函数基础算法简介

    一.多层语法糖本质 """ 语法糖会将紧挨着的被装饰对象名字当参数自动传入装饰器函数中""" def outter(func_name): ...

  5. Java基础之浅谈集合

    Java基础知识.关于List.Set.Map接口的了解,以及ArrayList.LinkedList.HashSet.TreeSet.HashMap.TreeMap...

  6. openoffice将word转pdf中文乱码或消失的坑

    将windows系统下的中文字体文件(C:\Windows\Fonts),放到/usr/share/fonts下,必须重启openoffice.

  7. 安卓记账本开发学习day7之完成进度

    支持长按删除记录,与根据备注搜索相关的收入或支出情况

  8. 界面优化--如何提升用户体验(Velocity.js和GSAP)

    Velocity.js和GSAP 我们需要提升代码质量来留住用户.作为用户界面的建设者,我们的工作是迅速引导和引导用户的注意力,指导他们如何有效地使用我们的应用程序. 1. 如何提升代码质量 定向聚焦 ...

  9. B. Lord of the Values 思维数学建构 附加 英文翻译

    原题链接 Problem - 1523B - Codeforces 题目及部分翻译 While trading on(贸易,利用) his favorite exchange trader Willi ...

  10. 3.SRE.操作手册:基础篇

    SRE的根基起码应该包括:SLO.监控.告警.减少琐事和简单化. SLO(服务质量目标):用于描述服务可靠性的程度. SRE的职责并不只是将"所有工作"都自动化,并保持" ...