首页 > 编程学习 > 从零开始学mysql(持续更新)

从零开始学mysql(持续更新)

发布时间:2022/10/1 8:46:06

何为MySQL

MySQL是一个开源的关系数据库管理系统,现隶属于oracle公司旗下产品。我们知道,任何软件后台的数据都是存放在数据库中的,而数据库的种类又可以分为关系型数据库和非关系型数据库,关系型数据库市场上主要包括Oracle公司的Oracle系列产品、sun公司的MySQL、IBM的DB2数据库以及微软的SQL server数据库,现在Sun公司已被Oracle公司收购了,所以现在是Oracle公司是数据库领域的大佬。MySQL因为开源免费的数据库,而且小巧易用,所以得到很大中小型企业的大量使用,相比于Oracle数据库,其它在大公司政府部门的应用较为广泛。现在市面上中小型企业开发的使用的数据库大部分都是MySQL,所以,学会如何使用MySQL数据库是必然的。本文就来讲解如何使用myslq这个数据库。

使用yum方式安装MySQL

环境:CentOS8、mysql-community-server-8.0.21-1.el8.x86_64

下载社区版:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载合适自己操作系统的版本,然后上传到Linux服务器,使用DM5校验一下下载的rpm仓库是否有问题:
在这里插入图片描述
校验码和网站的码一致说明下载的包没有问题,继续开始安装这个rpm镜像包:
在这里插入图片描述
安装完成,查看yum仓库,已存在mysql源:
在这里插入图片描述
查看可获得的mysql包
在这里插入图片描述
开始安装mysql: yum install mysql-community-server-8.0.21-1.el8.x86_64
安装完成后开启mysql:systemctl start mysqld
第一次启动mysql服务,会在/var/lib/mysql/目录下生产一堆文件:
在这里插入图片描述
默认安装完mysql会给root用户生成一个登陆密码,查看密码在/var/log/mysqld.log中:
在这里插入图片描述
systemctl start mysqld启动mysql服务后,使用该密码登陆后修改root密码即可。

安装完后root的密码保存在日志文件中,查看密码: grep 'temporary password' /var/log/mysqld.log 使用该密码登录后及时修改root密码。
默认情况下validate_password 已安装。默认实施的密码策略validate_password要求密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为8个字符。所以修改root密码需要符合密码策略。

注意:一些安装教程中建议yum安装完mysql后执行mysql_sercure_install,这是mysql安全配置向导命令mysql_secure_install,它可以设置root密码,是否允许root远程登录等一些重要设置 ,建议执行;具体操作是:systemctl start mysqld; mysql_secure_install 根据提示一步一步操作即可。

其它方式安装mysql

Oracle官网还提供了很多种其它安装MySQL的方法,可以参考以下文章:

https://blog.csdn.net/MssGuo/article/details/118467249
https://blog.csdn.net/MssGuo/article/details/117639180?

启动MySQL服务

使用yum安装或rpm安装的MySQL,其服务名是:mysqld,使用systemctl来管理MySQL服务。

systemctl start mysqld.service 						#启动MySQL服务
systemctl restart mysqld.service 					#启动MySQL服务
systemctl status mysqld.service 					#查看MySQL服务的状态
systemctl stop	mysqld.service						#关闭MySQL服务
systemctl enable mysqld.service						#开机自启服务(一定要设置mysql开机自启)
systemctl disable mysql.service						#禁止开机自启

登录MySQL

安装好mysql之后,已经默认安装了mysql客户端命令行工具,使用mysql命令即可登陆连接数据库。

mysql的登录语法:`mysql -uroot -ppassword -hip`
-u表示用户,默认root账号就是mysql服务的管理员账号,-p表示密码,-h表示主机
(注意:参数后面不要有空格,-hlocalhost表示连接本机,-hlocalhost属于默认值)


演示示例:
mysql -uroot -p -h192.168.1.100		#提示输入密码登录
mysql -uroot -p -h127.0.0.1 		#提示输入密码登录
mysql -uroot -p						#等价于上一条,不写-h默认 -hlocalhost

mysql的退出

进入到mysql的命令行模式下,需要退出mysql:exit或quit或\q

不区分大小写

mysql关键字不区分大小写,sql的关键字都是不区分大小写的,但是用户定义的对象名是区分大小写的哦。

注释符号

mysql的注释:# 、--、 /*…*/

修改用户密码

方法一、(不建议使用)
使用mysqladmin工具修改 ,不用登陆直接在Linux输入: mysqladmin -uroot -p'sb001' password 'ssbb001!'
出现警告,提示密码是以明文发送给了服务端,不安全,所以不建议使用这种方式修改用户密码。

方式二、(推荐使用)

先登录mysql:
[root@Centos ~]# mysql -uroot -p -h127.0.0.1								#登录数据库
mysql> use mysql;															#切换数据库
mysql>update user set authentication_string = PASSWORD'mimamima!001' where user='root';
mysql>commit;																#提交更新
mysql>flush privileges;														#刷新一下数据库权限

方法三、(推荐使用)

先登录mysql:
[root@Centos ~]# mysql -uroot -p -h127.0.0.1								#登陆数据库
mysql> use mysql;															#切换数据库
mysql>select user,host form user;											#先查看用户的host字段值是多少
#注意,下面的'jeffrey'@'localhost'必须根据上一步的用户名和host字段值来指定,同时REPLACE子句可以省略
mysql>ALTER USER 'jeffrey'@'localhost'  IDENTIFIED BY 'new_passwd_string'  REPLACE 'current_passwd_string';

mysql>flush privileges;														#刷新一下数据库权限

以下是修改我的root密码:从mysql 8.0开始,user表中root用户的的host值是%,而以前的版本该值为localhost。
在这里插入图片描述
如果是修改当前登录用户的密码还可以这样写:ALTER USER USER() IDENTIFIED BY 'new_passwd_string' REPLACE 'current_passwd_string';在这里插入图片描述

丢失root密码找回密码root

先停止服务:systemctl stop mysqld
ps -ef|grep mysqld 或 lsof -i:3306 检查mysqld服务是否真的停止了

使用忽略mysql授权表的方式启动mysql服务,启动服务后再修改密码,利用这种方式找回root密码:

vim /etc/my.cnf													#编辑mysql的my.cnf配置文件
在末尾添加:skip-grant-tables
systemctl start mysqld 											#启动mysql服务
mysql -uroot -p													#不用输入密码直接回车即可登录
mysql> use mysql;												#切换到mysql数据库
mysql>update user set authentication_string ='' where user='root';  #必须先将原密码设置为空字符串
mysql>commit;													#提交更新
mysql>flush privileges;											#必须刷新数据库,否则下面第二步会报错的
mysql>select user,host from user where user='root';  			#查看user表中root用户的host字段是什么

#注意:下面这句的@'%',百分号是根据root用户的host字段值是什么就是什么来填写,有些是localhost而有些是%
mysql>alter user 'root'@'%' identified by 'GUNhu001!';			#修改新密码为GUNhu001!
mysql>flush privileges;											#可以再刷新一下数据库权限
mysql>exit														#退出
vim /etc/my.cnf													#编辑mysql的my.cnf配置文件,删除skip-grant-tables
systemctl restart mysqld 										#重启动mysql服务,这时就可以使用新设置的密码登录了

mysql常用命令

show databases													#显示全部数据库
use  db_name;													#切换数据库
show tables														#显示当前数据库全部表
clear、  system clear											#清屏
create database db_name;										#创建数据库
drop database db_name;											#删除数据库
create user 'user_name'@'host' identified by 'password';		#创建用户
create user 'user_name'@'host'									#删除用户
create table table_name(字段 类型 约束);		 					#创建表
insert into table_name(字段1,字段2,字段3) values (字段值1,字段值2,字段值3);	#插入表数据
update set 字段1=xxx,字段2=xxx where 字段名=xxx;					#更新表数据
delete from table_name where .....								#删除表数据
alter table table_name add|drop 字段名 类型 约束;					#修改表结构
drop table table_name;											#删除表
select 字段1,字段2 ,...from table_name where 字段=xxx;			#查询语句

mysql的备份

备份可分为

系统数据库

登录数据库后:show datebases;会显示所有的数据库,其中以下的4个是安装mysql时系统自动安装的库,如下:

information_schema:虚拟库,主要存储了系统中的一些数据库对象的信息,如用户表信息,列信息,字符信息等。
performance_schema:主要存储数据库服务器的性能参数等。
mysql:授权库,主要存储系统用户的权限信息
sys:主要存储数据库服务器的系统信息
Copyright © 2010-2022 mfbz.cn 版权所有 |关于我们| 联系方式|豫ICP备15888888号