用户管理与字符集

一、用户管理

用户名的概念

用户名是由两部分组成的

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. ctfhub web 前置技能(请求方式、302跳转、Cookie)

    第一题:请求方式 打开环境分析题目发现当前请求方式为GET 查看源码发现需要将请求方式改为CTFHUB就可以 使用bp抓包 发送到repeater模块修改请求方式 即可得到flag 第二题:302跳转 ...

  2. 聊一聊Web端的即时通讯

    聊一聊Web端的即时通讯 Web端实现即时通讯的方法有哪些? - 短轮询 长轮询 iframe流 Flash Socket 轮询 客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并 ...

  3. ES6-11学习笔记--深拷贝与浅拷贝

    Object.assign,只是进行了浅拷贝,并没有进行深拷贝. 而且会在复杂结构当中会丢失属性,如下代码: let target = { a: { b: { c: 3 }, e: 4, f: 5, ...

  4. Linux 0.11源码阅读笔记-块设备驱动程序

    块设备驱动程序 块设备驱动程序负责实现对块设备数据的读写功能.内核代码统一使用缓冲块间接和块设备(如磁盘)交换数据,缓冲区数据通过块设备驱动程序和块设备交换数据. 块设备的管理 块设备表 内核通过一张 ...

  5. .NET程序设计实验一

    实验一  语言基础 一.实验目的 1. 熟悉Visual Stido.NET 实验环境: 2. 掌握控制台程序的编写方法: 3. 掌握C#程序设计语言的语法基础: 4. 掌握控制语句和数组的使用. 二 ...

  6. 给大家补充一个结构体的例子:下面TwoNumber就是一个形式上的结构体

    给大家补充一个结构体的例子:下面TwoNumber就是一个形式上的结构体: class TwoNumber {     int num1;     int num2; } public class T ...

  7. 布局框架frameset

    <!DOCTYPE html>//demo.html <html> <head> <meta charset="UTF-8"> &l ...

  8. Node的重要性

    一. 为什么要学Node 1. 是自己更全面, 有大局观 2. 提升话语权 3. 升职加薪的筹码 二. Node的作用和应用 1. 脱离浏览器运行 js 2. 后台API编写 3. webpack, ...

  9. Spring框架技术

    Spring框架技术 SSM(Spring+SpringMVC+Mybatis)阶段的学习,也算是成功出了Java新手村. 前面我们已经学习过Mybatis了. 从这里开始,很多的概念理解起来就稍微有 ...

  10. Java-GUI编程之菜单组件

    前面讲解了如果构建GUI界面,其实就是把一些GUI的组件,按照一定的布局放入到容器中展示就可以了.在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定 ...