IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL高级篇第一章(linux下安装MySQL)【下】 -> 正文阅读

[大数据]MySQL高级篇第一章(linux下安装MySQL)【下】

一 MYSQL登录

1.1 设置远程登陆

1.1.1 遇到错误问题

在这里插入图片描述

1.1.2 原因

由于Mysql配置了不支持远程连接引起的

1.1.3 确认网络

1 在远程机器上使用ping ip地址 保证网络畅通

在这里插入图片描述
如上图,显示我的网络通常。
在这里插入图片描述

2 在远程机器上使用telnet命令 保证端口号开放 访问端口

在这里插入图片描述- 3. 关闭防火墙或者开放

1.1.4 关闭防火墙或开放端口

1 方法一:关闭防火墙【推荐】

systemctl start firewalld.service

systemctl status firewalld.service

systemctl stop firewalld.service

#设置开机启用防火墙
systemctl enable firewalld.service

#设置开机禁用防火墙
systemctl disable firewalld.service
[root@atguigu ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2022-06-22 22:06:26 CST; 26min ago
     Docs: man:firewalld(1)
 Main PID: 719 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─719 /usr/bin/python2 -Es /usr/sbin/firewalld --no...

622 22:06:24 atguigu systemd[1]: Starting firewalld - dyna...
622 22:06:26 atguigu systemd[1]: Started firewalld - dynam...
622 22:06:26 atguigu firewalld[719]: WARNING: AllowZoneDri...
Hint: Some lines were ellipsized, use -l to show in full.
[root@atguigu ~]# systemctl stop firewalld
[root@atguigu ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 三 2022-06-22 22:33:47 CST; 11s ago
     Docs: man:firewalld(1)
  Process: 719 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 719 (code=exited, status=0/SUCCESS)

622 22:06:24 atguigu systemd[1]: Starting firewalld - dyna...
622 22:06:26 atguigu systemd[1]: Started firewalld - dynam...
622 22:06:26 atguigu firewalld[719]: WARNING: AllowZoneDri...
622 22:33:47 atguigu systemd[1]: Stopping firewalld - dyna...
622 22:33:47 atguigu systemd[1]: Stopped firewalld - dynam...
Hint: Some lines were ellipsized, use -l to show in full.
[root@atguigu ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2 方法二:开放端口

  • 查看开放的端口号
firewall-cmd --list-all

设置开放的端口号

firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=3306/tcp --permanent

重启防火墙

firewall-cmd --reload

    1. Linux下修改配置
use mysql;
select Host,User from user;
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

可以看到root用户的当前主机配置信息为localhost。

  • 修改Host为通配符%

Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而 %是个 通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连
接。如果 Host=% ,表示所有IP都有连接权限。


mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.00 sec)

Host修改完成后记得执行flush privileges使配置立即生效:

flush privileges;

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yqk.20021027';
Query OK, 0 rows affected (0.01 sec)

1.1.5 测试

如果是 MySQL8 版本,连接时还会出现如下问题:
在这里插入图片描述
解决方法:Linux下 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

然后在重新配置SQLyog的连接,则可连接成功了,OK。
密码强度最好高一点。

二 字符集的相关操作

2.1 修改MySQL5.7字符集

  1. 修改步骤
    在MySQL 8.0版本之前,默认字符集为 latin1 ,utf8字符集指向的是 utf8mb3 。网站开发人员在数据库
    设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL
    8.0开始,数据库的默认编码将改为 utf8mb4 ,从而避免上述乱码的问题。

操作1:查看默认使用的字符集

show variables like 'character%';
# 或者
show variables like '%char%';

mysql5.7 的默认字符集

在这里插入图片描述

mysql8.0的默认字符集

在这里插入图片描述
MySQL 5.7 默认的客户端和服务器都用了 latin1 ,不支持中文,保存中文会报错

操作2:修改字符集

vim /etc/my.cnf

在MySQL5.7或之前的版本中,在文件最后加上中文字符集配置:

character_set_server=utf8

在这里插入图片描述
在这里插入图片描述

操作3:重新启动MySQL服务

systemctl restart mysqld

但是原库、原表的设定不会发生变化,参数修改只对新建的数据库生效。

2.2 各级别的字符集

MySQL有4个级别的字符集和比较规则,分别是:

  • 服务器级别
  • 数据库级别
  • 表级别
  • 列级别
    执行如下SQL语句:
show variables like 'character%';

Variable_name解释
character_set_server服务器级别的字符集
character_set_database当前数据库的字符集
character_set_client服务器解码请求时使用的字符集
character_set_connection服务器处理请求时会把请求字符串从character_set_client转为character_set_connection
character_set_results服务器向客户端返回数据时使用的字符集
  1. 服务器级别
    character_set_server :服务器级别的字符集。
    我们可以在启动服务器程序时通过启动选项或者在服务器程序运行过程中使用 SET 语句修改这两个变量
    的值。比如我们可以在配置文件中这样写:
[server]
character_set_server=gbk # 默认字符集
collation_server=gbk_chinese_ci #对应的默认的比较规则

当服务器启动的时候读取这个配置文件后这两个系统变量的值便修改了。

  1. 数据库级别
    character_set_database :当前数据库的字符集
    在创建和修改数据库的时候可以指定该数据库的字符集和比较规则
CREATE DATABASE 数据库名
	[[DEFAULT] CHARACTER SET 字符集名称]
	[[DEFAULT] COLLATE 比较规则名称];

ALTER DATABASE 数据库名
	[[DEFAULT] CHARACTER SET 字符集名称]
	[[DEFAULT] COLLATE 比较规则名称];

  1. 表级别
    我们也可以在创建和修改表的时候指定表的字符集和比较规则,语法如下:
CREATE TABLE 表名 (列的信息)
	[[DEFAULT] CHARACTER SET 字符集名称]
	[COLLATE 比较规则名称]]

ALTER TABLE 表名
	[[DEFAULT] CHARACTER SET 字符集名称]
	[COLLATE 比较规则名称]

如果创建和修改表的语句中没有指明字符集和比较规则,将使用该表所在数据库的字符集和比较规则作
为该表的字符集和比较规则。

  1. 列级别
    对于存储字符串的列,同一个表中的不同的列也可以有不同的字符集和比较规则。我们在创建和修改列
    定义的时候可以指定该列的字符集和比较规则,语法如下:
CREATE TABLE 表名(
	列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称],
	其他列...
);
ALTER TABLE 表名 MODIFY 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称];

对于某个列来说,如果在创建和修改的语句中没有指明字符集和比较规则,将使用该列所在表的字符集
和比较规则作为该列的字符集和比较规则。

提示
在转换列的字符集时需要注意,如果转换前列中存储的数据不能用转换后的字符集进行表示会发生
错误。比方说原先列使用的字符集是utf8,列中存储了一些汉字,现在把列的字符集转换为ascii的
话就会出错,因为ascii字符集并不能表示汉字字符。

  • 如果 创建或修改列 时没有显式的指定字符集和比较规则,则该列 默认用表的 字符集和比较规则
  • 如果 创建表时 没有显式的指定字符集和比较规则,则该表 默认用数据库的 字符集和比较规则
  • 如果 创建数据库时 没有显式的指定字符集和比较规则,则该数据库 默认用服务器的 字符集和比较规
    则知道了这些规则之后,对于给定的表,我们应该知道它的各个列的字符集和比较规则是什么,从而根据
    这个列的类型来确定存储数据时每个列的实际数据占用的存储空间大小了。

三 SQL大小写规范

3.1 Windows和Linux平台区别

在 SQL 中,关键字和函数名是不用区分字母大小写的,比如 SELECT、WHERE、ORDER、GROUP BY 等关键字,以及 ABS、MOD、ROUND、MAX 等函数名。
不过在 SQL 中,你还是要确定大小写的规范,因为在 Linux 和 Windows 环境下,你可能会遇到不同的大
小写问题。 windows系统默认大小写不敏感 ,但是 linux系统是大小写敏感的
通过如下命令查看:

SHOW VARIABLES LIKE '%lower_case_table_names%'

lower_case_table_names参数值的设置:
默认为0,大小写敏感 。

  • 设置1,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转
    换为小写对表和数据库进行查找。
  • 设置2,创建的表和数据库依据语句上格式存放,凡是查找都是转换为小写进行。

两个平台上SQL大小写的区别具体来说:

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名、表名、表的别名、变量名是严格区分大小写的;
2、关键字、函数名称在 SQL 中不区分大小写;
3、列名(或字段名)与列的别名(或字段别名)在所有的情况下均是忽略大小写的;
MySQL在Windows的环境下全部不区分大小写

3.2 SQL编写建议

如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:

  1. 关键字和函数名称全部大写;
  2. 数据库名、表名、表别名、字段名、字段别名等全部小写;
  3. SQL 语句必须以分号结尾。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:11:43  更:2022-06-25 18:15:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:16:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码