执行命令:hostnamectl set-hostname newname,newname就是你想改的名字
1.防火墙:6是iptables,7是firewalld
2.启动服务命令:6是service,7是systemctl
1.关闭mysql服务
2.查看当前mysql安装情况
3.卸载上述命令查询出的已安装程序
yum remove mysql-xxx mysql xxx mysql -xxx
务必卸载干净,反复执行rpm -qa | grep -i mysql确认是否有卸载残留
find / -name mysql
rm -rf xxx
此外,官方 还提供了MySQL WorkBench(GUITOOL)一款专门为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQLWorkBench又分为两个版本,分别是社区版(MySQL WorkBench OSS)、商用版(MySQL WorkBenchSE)。
1.下载地址:
2.打开官网,点击downloads
然后,点击MySQL community(GPL)DownLoads
3.点击MySQL community Server
4.在General Avaliability(GA) Releases 中选择合适的版本
5.1 Linux系统安装软件的常用三种方式:
方式一:rpm命令
使用rpm命令安装扩展名为.rpm的软件包。
.rpm包的一般格式:
方式二 :yum命令
需联网,从互联网获取的yum源,直接使用yum命令安装。
方式三: 编译安装源码包
5.2 Linux系统下安装MySQL,官方给出多种安装方式
安装方式
特点
rpm
安装简单,灵活性差,无法灵活选择版本、升级
rpm repository
安装包极小,版本安装简单灵活,升级方便,需要联网安装
通用二进制包
安装比较复杂,灵活性高,平台通用性好
源码包
6.下载的tar包,用压缩工具打开
1.检查/tmp临时目录权限(必不可少)
由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执行:
chmod -R 777 /tmp
2.安装前,检查依赖
rpm -qa | grep libaio
rpm -qa | grep net-tools
1.将安装程序拷贝到/opt目录下
在mysql的安装文件目录下执行:(必须按照顺序执行);
2安装过程截图
安装过程中可能的报错信息:
一个命令:yum remove mysql-libs解决,清除之前安装过的依赖即可
执行如下命令,如果成功表示安装 mysql成功。类似Java -version如果打出版本等信息
执行如下命令,查看是否安装成功。需要增加 -i不用区分大小写,否则搜索不到。
rpm -qa | grep -i mysql
4.服务的初始化
mysqld --initialize --user=mysql
说明:–initialize选项默认以‘安装’模式来初始化,则会为root用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新的密码。生成的临时密码往日志中记录一份。
查看密码:
root@localhost:后面就是初始化的密码。
5.启动MySQL,查看状态
msyqld这个可执行文件就代表着MySQL服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。
查看进程:
ps -ef | grep -i mysql
6.查看MySQL服务是否启动
默认是enabled
2.修改密码
Alter user ‘root’@‘localhost’ identified by ‘new_password’;
3.1当前问题:
在用SQLyog或Navicat中配置远程连接Mysql数据库时遇到如下报错信息,这是由于Mysql配置了不支持远程连接引起的。
3.2确认网络
1.在远程机器上使用ping ip地址保证网络畅通
2.在远程机器上使用telnet命令保证端口号开放访问
telnet ip 地址 端口号
拓展:telnet命令开启
3.3.关闭防火墙或开发端口
方式一:关闭防火墙
service iptables stop
#设置开启启动防火墙
方式二:开放端口:
firewall-cmd --list-all
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
在Linux系统MySQL下测试:
可以看到root用户的当前主机配置信息为localhost
update user set host = ‘%’ where user = ‘root’;
host修改完后,记得执行flush privileges 使配置立即生效
flush privileges
3.5测试
alter user ‘root’@‘%’ identified with mysql_native_password by ‘root’;
在MySQL 8.0之前,MySQL使用的是validate_password插件检测、验证账号密码强度,保障账号的安全性
说明1:plugin library中的validate_password文件名的后缀名根据平台不同有所差异。对于Unix和Unix-like系统而言,它的文件后缀名是.so,对于Windows系统而言,它的文件后缀名是.dll。
说明2:修改参数后必须重启MySQL服务才能生效。
说明3:参数FORCE_PLUS_PERMANENT是为了防止插件在MySQL运行时的时候被卸载。当你卸载插件时就会报错。如下所示。
安装/启用插件方式2:运行时命令安装(推荐)
MySQL 8.0, 引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实现。8.0.25版本的数据库中,默认自动安装validate password组件。
未安装插件前,执行如下两个指令,执行效果:
安装插件后,执行如下两个指令,执行效果:
关于validate_password组件对应的系统变量说明:
提示:
组件和插件的默认值可能有所不同。例如, MySQL 5.7. validate_password_check_user_name的默认值为OFF。
2.修改安全策略
修改密码验证安全强度
此外,还可以修改密码中字符的长度
set global validate_password_length=1;
3.密码强度测试
如果你创建密码是遇到"Your password does not satisfy the current policy requirements",可以通过函数组件去检测密码是否满足条件:0-100。当评估在100时就是说明使用上了最基本的规则:大写+小写+特殊字符+数字组成的8 位以上密码
注意:如果没有安装validate_password组件或插件的话,那么这个函数永远都返回0。关于密码复杂度对应的密码复杂度策略。如下表格所示:
删除组件
在MySQL 8.0版本之前,默认字符集为1atin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码将改为utf8mb4,从而避免上述乱码的问题。
操作1:查看默认使用的字符集
character_set_server=utf8
操作3:重启MySQL服务
systemctl restart mysqld
但是原库、原表的设定不会发生变化,参数修改只对新建的数据库生效。
修改已创建数据库的字符集
alter database datest1 character set ‘utf8’;
修改已创建的数据表字符集
alter table emp convert to character set ‘utf8’;
**注意:**但是原有的数据如果是用非’utf8’编码的话,数据本身编码不会发生改变。已有数据需要导出或删除,然后重新插入。
MySQL有4个级别的字符集和比较规则,分别是:
执行如下SQL语句:
当服务器启动的时候读取这个配置文件后这两个系统变量的值便修改了。
character_set_database :当前数据库的字符集
我们在创建和修改数据库的时候可以指定该数据库的字符集和比较规则,具体语法如下:
其中的DEFAULT可以省略,并不影响语句的语义。比如:
数据库的创建语句中也可以不指定字符集和比较规则,比如这样:
create database 数据库名;
这样的话将使用服务器级别的字符集和比较规则作为数据库的字符集和比较规则。
我们也可以在创建和修改表的时候指定表的字符集和比较规则,语法如下:
比方说我们在刚刚创建的charset_demo_db数据库中创建一个名为t的表,并指定这个表的字符集和比较规则:
如果创建和修改表的语句中没有指明字符集和比较规则,将使用该表所在数据库的字符集和比较规则作为该表的字符集和比较规则。
对于存储字符串的列,同一个表中的不同的列也可以有不同的字符集和比较规则。我们在创建和修改列定义的时候可以指定该列的字符集和比较规则,语法如下:
比如我们修改一下表t中列col的字符集和比较规则可以这么写:
对于某个列来说,如果在创建和修改的语句中没有指明字符集和比较规则,将使用该列所在表的字符集和比较规则作为该列的字符集和比较规则。
提示:
在转换列的字符集时需要注意,如果转换前列中存储的数据不能用转换后的字符集进行表示会发生错误。比方说原先列使用的字符集是utf8,列中存储了一些汉字,现在把列的字符集转换为ascii的话就会出错,因为ascii字符集并不能表示汉字字符。
我们介绍的这4个级别字符集和比较规则的联系如下:
知道了这些规则之后,对于给定的表,我们应该知道它的各个列的字符集和比较规则是什么,从而根据 这个列的类型来确定存储数据时每个列的实际数据占用的存储空间大小了。比方说我们向表 t 中插入一 条记录:
首先列 o1使用的字符集是 cbk ,一个字符我”在 bk 中的编码为 OXCED2 ,占用两个字节,两个字符的实际数据就占用4个字节.如果把该列的字符集修改为 utf8 的话,这两个字符就实际占用6个字节
utf8字符集表示一个字符需要使用14个字节,但是我们常用的一些字符使用13个字节就可以表示了。而字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能,所以设计MySQL的设计者偷偷的定义了两个概念:
在MySQL中utf8 是utf8mb3 的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符。如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情,那请使用utf8mb4。
此外,通过如下指令可以查看MySQL支持的字符集:
上表中,MySQL版本一共支持41种字符集,其中的Default collation列表示这种字符集中一种默认的比较规则,里面包含着该比较规则主要作用于哪种语言,比如utf8_polish_ci表示以波兰语的规则比较,utf8_spanish_ci是以西班牙语的规则比较, utf8_general_ci是一种通用的比较规则。
后缀表示该比较规则是否区分语言中的重音、大小写。具体如下:
常用操作
常用操作2
说明1:
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci 校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
一般情况,用utf8_general_ci就够了,但如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。
说明2:
修改了数据库的默认字符集和比较规则后,原来已经创建的表格的字符集和比较规则并不会改变,如果需要,那么需单独修改。
常用操作3
我们知道从客户端发往服务器的请求本质上就是一个字符串,服务器向客户端返回的结果本质上也是一个字符串,而字符串其实是使用某种字符集编码的二进制数据。这个字符串可不是使用一种字符集的编码方式一条道走到黑的,从发送请求到返回结果这个过程中伴随着多次字符集的转换,在这个过程中会用到3个系统变量,我们先把它们写出来看一下:
这几个系统变量在我的计算机上的默认值如下(不同操作系统的默认值可能不同)
为了体现出字符集在请求处理过程中的变化,我们这里特意修改一个系统变量的值:
现在假设我们客户端发送的请求是下边这个字符串:
为了方便大家理解这个过程,我们只分析字符’我’在这个过程中字符集的转换。
现在看一下在请求从发送到结果返回过程中字符集的变化:
提示如果你使用的是可视化工具,比如navicat之类的,这些工具可能会使用自定义的字符集来编码发送到服务器的字符串,而不采用操作系统默认的字符集(所以在学习的时候还是尽量用命令行窗口)
提示:
如果某个列使用的字符集和character_set_connection代表的字符集不一致的话,还需要进行一次字符集转换。
总结图示如下:
从这个分析中我们可以得出这么几点需要注意的地方:
经验
开发中通常把character_set_client、character_set_connection, character_set_results 这三个系统变量设置成和客户端使用的字符集一致的情况,这样减少了很多无谓的字符集转换。为了方便我们设置, MySQL提供了一条非常简便的语句:
set names 字符集名;
这一条语句产生的效果和我们执行这3条的效果是一样的:
SET character_set_client = 字符集名;
SET character_set_connection = 字符集名;
SET character_set_results = 字符集名;
比方说我的客户端使用的是utf8字符集,所以需要把这几个系统变量的值都设置为utf8:
另外,如果你想在启动客户端的时候就把character_set_client、character_set_connection、character_set_results 这三个系统变量的值设置成一样的,那我们可以在启动客户端的时候指定一个叫default-character-set的启动选项,比如在配置文件里可以这么写:
它起到的效果和执行一遍SET NAMES utf8是一样一样的,都会将那三个系统变量的值设置成utf8。
在SQL中,关键字和函数名是不用区分大小写的,比如SELECT,WHERE,ORDER,GROUP BY等关键字,以及ABS、MOD,ROUND,MAX等函数名。
不过在SQL中,你还是要确定大小写的规范,因为在Linux和Windows环境下,你可能会遇到不同的大小写问题,Windows系统默认大小写不敏感,但是Linux系统是大小写敏感的通过如下命令查看:
Windows系统下:
Linux系统下:
MySQL 在LInux下数据库名、表明、列明、别名大小写规则是这样的:
MySQL在Windows的环境下全部不区分大小写
注意:在进行数据库参数设置之前,需要掌握参数带来的影响,切不可盲目设置。
如果你的变量名命令规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:
数据库名、表名和字段名在Linux MySQL环境下是区分大小写的,因此建议你统一这些字段的命名规范,比如全部采用小写的方式。
虽然关键字和函数名称在SQL中不区分大小写,也就是如果小写的话同样可以执行。但是同时将关键词和函数名称全部大写,以便于区分数据库名、表名、字段名。
sql_mode 会影响MySQL支持SQL语法以及它执行的数据验证检查。通过设置sql_mode ,可以完成不同严格程度的数据校验,有效地保障数据准确性。
MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。
MySQL5.6和MySQL5.7默认的sql_mode模式参数是不一样的:
宽松模式:
如果设置的是宽松模式,那么我们在插入数据的时候,即便是给了一个错误的数据,也可能会被接受,并且不报错。
举例:在创建一个表时,该表中有一个字段为name,给name设置的字段类型为char(10),如果在插入数据的时候,其中name这个字段对应的有一条数据的长度超过了10,例如‘1234567890abc’,超过了设定的字段长度10,那么不会报错,并且取前10个字符存上,也就是说你这个数据被存为了‘1234567890’,而‘abc’就没有了,这就是宽松模式的效果。
应用场景:通过设置sql_mode 为宽松模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据库之间进行迁移时,则不需要对业务sql进行较大的修改。
严格模式
出现上面宽松模式的错误,应该报错才对,所以MySQL5.7版本就将sql_mode默认值改为了严格模式。所以在生产等环境中,我们必须采用的是严格模式,进而开发、测试环境的数据也必须要设置,这样在开发测试阶段就可以发现问题。并且我们即便是用的MySQL5.6,也应该自行将其改为严格模式。
开发经验:MySQL等数据库总想把关于数据的所有操作都自己包揽下来,包括数据的校验,其实开发中,我们应该在自己开发的项目程序级别将这些校验给做了,虽然写项目的时候麻烦一些步骤,但是这样做后,我们在进行数据库迁移或者项目迁移时,就会方便很多。
改为严格模式后可能存在的问题:
宽松模式举例1:
宽松模式举例2
举例:
#改为严格模式。此方法只当会话生效,关闭当前会话就不生效了。
set session sql_mode = ‘STRICT_TRANS_TABLES’;
#改为严格模式。此方法在当前服务中生效,重启MySQL服务后失效。
set global sql_mode = ‘STRICT_TRANS_TABLES’;
然后重启mysql
当然生产环境上是禁止重启MySQL服务的,所以采用临时设置方式+永久设置方式来解决线上问题,那么即便是有一天真的重启了MySQL服务,也会永远生效了。
运行结果报错:
下面列出MySQL中最重要的3种模式:
…(img-ZRLnrT5O-1670972022148)]
宽松模式举例2
[外链图片转存中…(img-0HVMJZt9-1670972022148)]
[外链图片转存中…(img-9L43pSKZ-1670972022148)]
[外链图片转存中…(img-1SX7LHnj-1670972022149)]
举例:
#改为严格模式。此方法只当会话生效,关闭当前会话就不生效了。
set session sql_mode = ‘STRICT_TRANS_TABLES’;
#改为严格模式。此方法在当前服务中生效,重启MySQL服务后失效。
set global sql_mode = ‘STRICT_TRANS_TABLES’;
然后重启mysql
当然生产环境上是禁止重启MySQL服务的,所以采用临时设置方式+永久设置方式来解决线上问题,那么即便是有一天真的重启了MySQL服务,也会永远生效了。
运行结果报错:
下面列出MySQL中最重要的3种模式:
# MySQL修改主机名在MySQL数据库中,主机名是一个标识符,用于识别连接到数据库服务器的客户端。有时候,我们需要修改主机名,以便更好地管理数据库。本文将介绍如何使用MySQL命令行或MySQL Workbench修改主机名,并提供相关的代码示例。## 什么是主机名?主机名是计算机网络中用于识别设备的名称。在MySQL中,主机名用于标识连接到数据库服务器的客户端。每个客户端都有一个
welcome to my blog编辑/etc/hostname文件, 将原来的名字修改成新名字, 然后重新启动即可
hostname查看主机名hostnamectl status查看当前主机名的详细信息,操作系统版本信息,kernel内核版本信息,操作系统位数.hostnamectl -status --static/transient/pretty1-hostname jasonchu 临时修改主机名,重启后失效2-vi /etc/sysconfig/network &nbs
命令后发现没有变化?重新开终端即可显示,你也可以通过uname -n命令来查看当前的主机名。永久修改Linux主机名的方法永久修改Linux主机名,Linux服务器
主机名称 hostname Linux CentOS7.6
更改主机名当装完系统后,默认主机名为localhost,使用hostname就可以知道你的linux的主机名是什么。同样使用hostname可以更改你的主机名。下次登录时就会把命令提示符中的’localhost’更改成’Aming’。不过这样修改只是保存在内存中,下次重启还会变成未改之前的主机名,所以需要你还要去更改相关的配置文件’/etc/sysconfig/network’。把HOSTNAME
1 ip地址、主机名和域名 ip地址是计算机在网络中的身份,这个是毋庸置疑的。 但是,在公网中呢?ip地址不好记忆,那么就用域名。 同样,在局域网中呢?ip地址同样不好记忆,那么就用主机名了。 2 主机名的用途 在局域网中,假如我们有三台主机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器
linux修改root@后面的别名通过终端登录服务器后默认显示的主机名有的时候是随机数或者太长[root@ecs-x-large-9-linux-20221387234818 ~]#方法一:vi /etc/hostname然后输入新的主机名,但需重启才能生效。方法二:hostnamectl set-hostname dongsir一样需要重新启动。方法三:vi ~/.bashrc加入这句话expo
本周精选10篇时间序列领域前沿论文,覆盖4个时序方向:时间序列预测与泛化能力优化,时序数据驱动的跨领域应用,时间序列异常检测与事件预测,时间序列推理与不确定性量化方向。源码和论文感兴趣的自取!
本文从大数据视角出发,结合时序数据库的核心选型维度,对比国内外主流产品的优劣势,重点剖析Apache IoTDB在性能、兼容性、易用性、成本等方面的核心竞争力,并补充实操落地指南,为企业时序数据库选型提供全方位的实操性参考。
在WPF中,我们知道界面层可以通过Trigger触发器实现“条件”——“赋值”的功能属性触发器Property Trigger:当Dependency Property的值发生改变时触发。数据触发器Data Trigger: 当普通.NET属性的值发生改变时触发。事件触发器Event Trigger: 当路由时间被触发时调用。属性触发器与数据触发器中又可有多条件触发器,即类似条件语句中“并”的效果
一、字符集的历史渊源在Windows编程时经常会遇到编码转换的问题,一直以来让刚接触的人摸不着头脑。其实只要弄清Win32程序使用的字符编码方式就清楚了,图1展示了一个Win32控制台项目的属性中的字符集选项。这里有两个不同的字符集:一个是Unicode字符集,另一个就是多字节字符集MBCS(Multi-Byte Character System),即熟知的ANSI字符集。图1