用户管理与字符集

一、用户管理

用户名的概念

用户名是由两部分组成的

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. python学习笔记(九)——线程与进程

    一.线程 Python 中为我们提供了两个模块来创建线程. _thread threading thread 模块已被废弃.用户可以使用 threading 模块代替.所以,在 Python 中不能再 ...

  2. CSS自定义属性 —— 别说你懂CSS相对单位

    前段时间试译了Keith J.Grant的CSS好书<CSS in Depth>,其中的第二章<Working with relative units>,书中对relative ...

  3. linux-RHEL7.0 —— 《Linux就该这么学》阅读笔记

    目录 linux-RHEL7.0 安装部署 修改root密码 RPM(红帽软件包管理器) YUM(软件仓库) Systemd初始化进程 总结 linux命令 帮助命令 man 系统工作命令 echo ...

  4. css3种不知道宽高的情况下水平垂直居中的方法

    第一种:display:table-cell 组合使用display:table-cell和vertical-align.text-align,使父元素内的所有行内元素水平垂直居中(内部div设置di ...

  5. windows+ubuntu双系统时间同步问题

    windows+ubuntu双系统时间同步问题 给Ubuntu更新时间,在终端输入: sudo apt-get install ntpdate sudo ntpdate time.windows.co ...

  6. redis 指定db库导入导出数据

    最近根据之前的项目重新改编一个新的项目,发现上一个项目的搭建者,把一些区域权限和划分放在redis上存储,因此不得不照搬过来,所以搜索一下相关如何做的 发现一个比较简单的做法,记录一下操作过程,方便以 ...

  7. 如何使用 python 爬取酷我在线音乐

    前言 写这篇博客的初衷是加深自己对网络请求发送和响应的理解,仅供学习使用,请勿用于非法用途!文明爬虫,从我做起.下面进入正题. 获取歌曲信息列表 在酷我的搜索框中输入关键词 aiko,回车之后可以看到 ...

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

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

  9. 前端vue之属性指令、style和class、条件渲染、列表渲染、事件处理、数据双向绑定、表单控制、v-model进阶

    今日内容概要 属性指令 style和class 条件渲染 列表渲染 事件处理 数据的双向绑定 v-model进阶 购物车案例 内容详细 1.属性指令 <!DOCTYPE html> < ...

  10. DevExpress控件与VS和.NET各个版本的支持情况

    如下图所示,绿色Yes代表支持,红色No代表不支持.对于有些人觉得装了dev后,vs工具箱没有,一般都是以下两大问题: 1.要么你的Dev的版本不支持你当前的VS版本,没有很正常. 2.要么你的项目的 ...