1,远程连接Linux下的MySQL
确认网络没有问题
在远程机器上使用ping ip地址 保证网络畅通
在远程机器上使用telnet命令 保证端口号开放 访问
telnet ip地址 端口号
- 启动windows下的Telnet

关闭防火墙
systemctl stop firewalld.service
修改MySQL下的ip访问限制 (让所有ip都能访问)生产环境下禁止这种情况,要根据安全规则进行配置ip
1
2
3update user set host = '%' where user ='root';
flush privileges;###2,mysql5.7或之前版本中字符编码问题
Linux下的mysql5.7字符编码默认使用’latin1’,在新建库,表时导致无法插入中文。
1
2
3show variables like 'character%';
# 或者
show variables like '%char%';解决方法,一步到位
vim /etc/my.cnf
character_set_server=utf8
systemctl restart mysqld
不会影响之前已建库,表,需要手动更改
1
2
3alter database dbtest1 character set 'utf8';
alter table t_emp convert to character set 'utf8';
用户和权限管理
DESCRIBE ‘表名’; 查看某个表基本结构
引入角色的目的是方便管理拥有相同权限的用户 。恰当的权限设定,可以确保数据的安全性,这是至关重要的。

创建角色使用 CREATE ROLE 语句,语法如下:
1 | CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]... |
角色名称的命名规则和用户名类似。如果 host_name省略,默认为% , role_name不可省略 ,不可为空。
练习:我们现在需要创建一个经理的角色,就可以用下面的代码:
1 | CREATE ROLE 'manager'@'localhost'; |
给角色赋予权限
创建角色之后,默认这个角色是没有任何权限的,我们需要给角色授权。给角色授权的语法结构是:
1 | GRANT privileges ON table_name TO 'role_name'[@'host_name']; |
上述语句中privileges代表权限的名称,多个权限以逗号隔开。可使用SHOW语句查询权限名称,列出了部分权限列表。
1 | SHOW PRIVILEGES\G |
MySQL索引的数据结构
内容比较难和复杂,这里引用了尚硅谷-宋红康老师文档,可以仔细阅读!
尚硅谷-宋红康