系统:Centos7.6
数据库:MySQL8.0
二进制安装:
先画重点:
如果是云服务器,请先登录对应的云控制台,在安全组中将需要的端口打开!
一、确认服务器没有安装 mysql 或已卸载完全。
二、下载二进制包
两种压缩格式:
1、gz 格式,例如:mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
解压方式:
# tar -xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
2、xz 格式,例如:mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
解压方式:
先解压为 tar 包:
# xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 不保留原压缩包
再解压 tar 包:
# tar xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar
三、自定义目录规则:
安装位置:/usr/local/mysql
数据保存位置:/usr/local/mysql/data
日志保存位置:/usr/local/mysql/log
socket 位置:/usr/local/mysql/tmp
pid-file 位置:/usr/local/mysql/run
四、安装
1、压缩包解压后,从原文件夹移动并重命名至安装目录下:
# mv mysql-8.0.16-linux-glibc2.12-x86_64 /usr/local/mysql
2、创建目录
# mkdir /usr/local/mysql/data
# mkdir /usr/local/mysql/log
# mkdir /usr/local/mysql/tmp
# mkdir /usr/local/mysql/run (压缩包解压后如果有这个文件夹,就不用重新创建)
3、新建 mysql 用户、组及目录
# groupadd mysql
# useradd -r -g mysql mysql
4、改变目录所有者
# cd /usr/local/mysql
# pwd
# chown -R mysql . chown -R mysql:mysql /usr/local/mysql
# chgrp -R mysql .
5、配置参数
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果报错
则需要安装 libaio:
# yum install -y libaio
安装完成后,重复之前的配置命令
配置完成后,需要注意记录生成的临时密码,root@localhost:zw3r_M2wy9Jf
6、修改系统配置文件
#cd
/usr/local/mysql/support-files
# cp my-default.cnf /etc/my.cnf (此文件如果解压后没有,看看/etc 下是不是有,如果没有,自己创建)
# cp mysql.server /etc/init.d/mysql
# vim /etc/my.cnf
进行如下图配置:
# vim /etc/init.d/mysql
修改以下内容:
7、运行
# cd /usr/local/mysql
运行服务器程序
# bin/mysqld_safe --user=mysql &
如果出现如下错误
可以自己创建一个 mysql.log: echo "" > /usr/local/mysql/log/mysql.log
停止 mysql
# bin/mysqladmin -uroot -p
-登陆
#
mysql -hlocalhost -uroot -p
--如果出现:-bash: mysql: command not found
--就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行
输入之前的临时密码,如果没记住,参考最后一步,如何修改 root 密码。
8、添加系统路径
# vim /etc/profile
添加:
export PATH=/usr/local/mysql/bin:$PATH
如下:
# source /etc/profile
9、设置 mysql 服务和开机启动
# chmod 755 /etc/init.d/mysql
# chkconfig --add mysql
10、开放远程链接
如果开放 root 用户的远程链接,
mysql> update user set host = "%" where user='root';
开放权限
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
创建用户和授权
mysql> create user 'test'@'%' identified by 'test123*';
mysql> grant all privileges on *.* to 'test'@'%' with grant option;
查看用户权限
mysql> select host, user, authentication_string, plugin from user;
重点:如果你没有设置认证方式,默认的密码加密方式是:caching_sha2_password,而现在很多客户端工具还不支持这种加密认
证方式,连接测试的时候就会报错:client does not support authentication protocol requested by server; consider
upgrading MySQL client,这里的错误信息就是不支持身份认证方式,没关系,去 my.cnf 里面在[mysqld]下面加上这句话即
可:
default_authentication_plugin=mysql_native_password
修改后,重启 mysql,此时再创建用户时,密码的加密方式就默认为 mysql_native_password
修改已有账户的密码加密方式:
use mysql;
修改新填的用户的密码加密方式:
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test1234*';
FLUSH PRIVILEGES;
看看是否修改成功:
mysql> select host, user, authentication_string, plugin from user;
mysql root 密码修改
如果忘记 root 密码
# vim /etc/my.cnf
2.在[mysqld]中添加
skip-grant-tables
例如:
[mysqld]
skip-grant-tables
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
3.重启 mysql
service mysql restart
4.用户无密码登录
mysql -uroot -p (直接点击回车,密码为空)
5.选择数据库
use mysql;
6.修改 root 密码
修改密码之前,先看清楚保存密码的字段名称: select * from user;
如果是 password,则
UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
完成--------------
如果是 authentication_string,则比较复杂,依据以下步骤操作:
1、先将密码设置为空
use mysql;
update user set authentication_string='' where user='root'
2、quit; 退出 mysql ;
vim /etc/my.cnf 将 skip-grant-tables 删除,保存退出;
service mysql restart 重启 mysql;
3、登录:mysql -uroot -p , 因为密码为空,所以可以直接回车,登录成功;
4、正式修改密码:
ALTER user 'root'@'localhost' IDENTIFIED BY 'Qian123#';
至此修改成功; 从新使用用户名密码登录即可;
7.执行
flush privileges;
8.退出 mysql
quit
9.编辑 /etc/my.cnf
删除 skip-grant-tables 保存退出
10.重启 mysql
service mysql restart。
切记:不能按如下方法直接修改密码
update user set authentication_string="newpassword" where user="root";