何为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.youkuaiyun.com/MssGuo/article/details/118467249
https://blog.youkuaiyun.com/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:主要存储数据库服务器的系统信息