mysql安装包下载
Linux的版本为 :centos8
mysql下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
解压,上传如下文件到 linux 系统
MySQL的安装
检查/tmp临时目录权限
mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执行 :
chmod -R 777 /tmp
安装前,检查依赖
#检查libaio包是否存在
#不存在的话:yum install libaio
rpm -qa|grep libaio
#检查net-tools包是否存在
rpm -qa|grep net-tools
MySQL安装过程
在上传文件的目录下,按顺序执行如下命令:
rpm -ivh mysql-community-common-8.0.25-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.25-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.25-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.25-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.0.25-1.el8.x86_64.rpm
检查是否安装成功
服务的初始化
为了保证数据库目录与文件的所有者为 mysql 登录用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化:
mysqld --initialize --user=mysql
说明: --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新的密码。生成的临时密码会往日志中记录一份。
查看密码:cat /var/log/mysqld.log
启动mysql
mysqld 这个可执行文件就代表着 mysql 服务器程序,运行这个可执行文件就可以直接启动一个
服务器进程。
# 启动
systemctl start mysqld
# 关闭
systemctl stop mysqld
# 重启
systemctl restart mysqld
# 查看状态
systemctl status mysqld
查看进程:ps -ef | grep -i mysql
查看MySQL服务是否自启动
systemctl list-unit-files|grep mysqld.service
默认开启
如果不是enabled可以运行如下命令设置自启动:systemctl enable mysqld.service
如果希望不进行自启动,运行如下命令设置:systemctl disable mysqld.service
MySQL登录
mysql登录
通过 mysql -hlocalhost -P3306 -uroot -p 进行登录,在Enter password:录入初始化密码
修改密码
因为初始化密码默认是过期的,所以查看数据库会报错
修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY ' 新密码 ';
5.7版本之后(不含5.7),mysql加入了全新的密码安全机制。设置新密码太简单会报错。
远程连接
云服务器在安全组里开放端口,本地虚拟机关闭防火墙。
用sql yog或navicat连接数据库出现如下错误,这是由于mysql配置了不支持远程连接引起的。
Linux下修改配置
测试:
use mysql;
select Host,User from user;
可以看到root用户的当前主机配置信息为localhost。
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都有连接权限。
注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置。
update user set host = '%' where user ='root';
Host设置了“%”后,需要执行 flush privileges; 使配置立即生效便可以允许远程访问。
再次远程连接mysql出现如下错误:
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL Client
错误原因是加密方式的问题:
mysql8版本换了新的身份验证插件(caching_sha2_password)
查看加密方式:select user, plugin from user where user= 'root';
原来的身份验证插件为(mysql_native_password),只需要更改一下加密方式即可解决
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
重新远程连接mysql,成功!