学数据库一般都是mysql起手,最好就是自己搭建一个mysql服务可以弄明白很多知识。首先,得有一个linux服务器,我的是腾讯云的最低配,centos7.6,打算安装mysql8,8和以前的版本算是一个大的更迭,有不少变化,使用的时候可以多翻看手册。
两种方式:
1.在线安装(很慢,很慢,很慢…)
2.离线安装(需要提前下载,最好是国内镜像,速度稍微快点)
在线安装真的很慢,但是我选择的还是在线安装,主要是方便
官网:https://dev.mysql.com/downloads/repo/yum/
把这个源弄到服务器上有2个办法
1:直接下载,注意下载链接不是官网的链接,是库的链接
先cd到一个保存的目录下,然后运行下面命令
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
这是一个centos7版本的依赖
2:在官网上下载源,然后传到服务器上,可以使用 rz 命令,安装rz,sz命令
yum -y install lrzsz
我选的是第二种方式,主要考虑到以后还需要用 rz,sz命令上传下载文件,先装上试试是否可用
源弄到服务器上以后,直接本地安装源
yum install mysql80-community-release-el7-3.noarch.rpm
这样源就生效了,里面包括安装mysql的所有下载链接和相关配置
yum --enablerepo=mysql80-community install mysql-community-server
让刚配置的源生效,并开始安装mysql
这个下载过程很慢,总共500-600M,下载几十 k每秒,期间会跳出来各种确定是否的选项,不要纠结,全选y
其实下载的过程不用管,我是半夜下载的,早上看一下都下载完了,再把刚才那个命令跑一下,它会自动检查已经下载的包,然后跳出选择选项,再选择y也是没问题的
systemctl start mysqld
个人推荐这种方式,tar包下载好以后安装会非常快
官网:https://dev.mysql.com/downloads/mysql/
说白了就是下载那个最大的tar包,然后rz命令传到服务器上,然后解压,解压有好多包,只有下面四个是我们需要的
mysql-community-common-8.0.18-1.el7.x86_64.rpm
mysql-community-libs-8.0.18-1.el7.x86_64.rpm
mysql-community-client-8.0.18-1.el7.x86_64.rpm
mysql-community-server-8.0.18-1.el7.x86_64.rpm
还有几个带 compat 字样的包,是兼容包,如果要向下兼容版本需求,建议安装上,依次安装上面的几个包,如果安装兼容包,最后安装
rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm
安装完以后初始化mysql
mysqld --initialize
修改目录权限
sudo chown mysql:mysql /var/lib/mysql -R
启动mysql服务
systemctl start mysqld
查看mysql服务状态
service mysqld status
在文件
/var/log/mysqld.log
有一个默认密码
默认用户:root
默认密码:见上图
mysql -uroot -p
输入密码就可以登录了
默认密码进入mysql以后你会发现压根就不能进行有效的操作,会提示让你修改密码,mysql8的密码策略要求包括:大小写、特殊字符、数字、最短8位长度
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test@123';
mysql 好多的权限控制都在mysql的表里面,包括增删改查,远程连接,密码策略等等都在,本地连接mysql以后,使用下面命令查看现有的mysql库
show databases;
可以看到有4个库
其中mysql库是常用的,进入mysql库的命令
use mysql;
进去以后查看一下mysql库里面的表
show tables;
可以看到很多表
其中user表是控制用户权限的表,我们先看一下root用户的连接方式
select host,user from user;
root用户的host字段是localhost,啥意思呢,就是说root只允许本机连接,其他任何地方是不能用的,这就很坑了,所以修改一下变成任何地方(%)都可以连接(如果不修改,其他地方连接就会报1130的错误)
update user set host='%' where user='root';
记得刷新一下权限
flush privileges;
这时候可以远程连接mysql,但是记得用windows的cmd连接,为啥呢,因为其他linux连接或者navicate连接都会有问题,这些问题另外处理。
mysql -h ip地址 -P 3306 -u root -p
输入密码就可访问
这个主要是navicate加密方式和mysql8不一致导致的,最简单的方式就是修改mysql8的加密方式
首先设置加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自己设置的密码';
再次更新密码,设置为永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '自己设置的密码' PASSWORD EXPIRE NEVER;
刷新一下权限
flush privileges;