最近由于项目需要,搭建一套Mysql数据库(我这边用的系统是Centos 7),就到官网下载了最新版本的mysql安装,发现新版的mysql8和以前5版本有些差异,以前的笔记也没顺利搭建完成,特此整理了mysql8版本的安装步骤,希望看到这篇博客的伙计能得到帮助。
tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
mv mysql-8.0.16-linux-glibc2.12-x86_64/* /usr/local/mysql
groupadd mysql
useradd -r -g mysql mysql
转到mysql目录下
cd /usr/local/mysql
修改当前目录为mysql用户
chown -R mysql:mysql ./
初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注:这个命令和mysql5.7之前的命令不一样了,之前命令是:bin/mysql_install_db --user=mysql,但是之后的版本已经被mysqld --initialize替代
若发现mysql_install_db没有这个文件,所以在bin下创建这个文件,并且配置权限
mkdir mysql_install_db
chmod 777 ./mysql_install_db
若报错:bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
则yum安装numactl,命令为:yum -y install numactl
再次执行"bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data"
注:mysql5.7版本之上会初始化话一个密码,在这里要记住这个初始化密码,在下面初次登录会用上(kULIN_%Y8Nyw)
修改权限配置
chown -R root:root ./ //修改当前用户为root用户
chown -R mysql:mysql data //修改当前的data目录为mysql用户
注:如果/usr/local/mysql/目录下没有tmp文件,手动创建,并且配置权限
mkdir tmp
chmod 777 ./tmp
cp support-files/my-default.cnf /etc/my.cnf
注:如果没有my-default.cnf就手动创建一个文件,并且配置权限
vim support-files/my-default.cnf
chmod 777 ./support-files/my-default.cnf
重新执行“cp support-files/my-default.cnf /etc/my.cnf”,然后修改/etc/my.cnf文件:
vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
#指定用户密码加密方式
default_authentication_plugin=mysql_native_password
#必填项
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /usr/local/mysql/tmp/mysql.sock
将{mysql}/ support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
注册启动服务:
chkconfig --add mysql
查看是否添加成功
chkconfig --list mysql
显示:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
vim /etc/profile
文件中写入:export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
保存退出之后,让文件生效source /etc/profile
mysql -uroot -p cCS<-H=Yu0Os //后面是系统生成的密码
注:mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。
从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password,恰恰客户端不支持新的加密方式。
所以,使用
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
修改密码,而不是
alter user 'root'@'localhost' identified by 'root'; //修改root密码
执行use mysql;
执行update user set host = '%' where user = 'root';这一句执行完可能会报错,不用管它。
执行FLUSH PRIVILEGES;