主要参考文章:
linux 安装mysql8.0 超详细教程_yang灬仔-优快云博客_linux 安装mysql8
这个文章开头下载的是mysql-8.0.20版本的,tar解压的确是mysql-8.0.21版本,这一点要注意
1、在 /use/local下创建mysql文件夹 mkdir mysql
下载Mysql
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
由于在虚拟机上直接wget下载很慢,所以我是直接在自己电脑上浏览器下载下来的,然后通过rz上传到虚拟机上的。
解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
-C /export/servers/ 可加可不加,加上了就是解压至指定路径下,不加就是默认解压到当前目录下。
重命名文件夹
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0
这里我放错位置了,应该将mysql-8.0这个文件放到/usr/local下,不是/usr/local/mysql/下
[root@ha-01 local]# pwd
/usr/local
[root@ha-01 local]# mv ./mysql/mysql-8.0 ./
创建data文件夹 存储文件
创建用户组以及用户和密码
[root@ha-01 mysql-8.0]# groupadd mysql
[root@ha-01 mysql-8.0]# useradd -g mysql mysql
切换到bin目录下 cd bin
初始化基础信息
[root@ha-01 bin]# ./mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize
初始化后会出现一个临时密码
编辑my.cnf文件 vi /etc/my.cnf 注释mysqld_safe,我的/etc/下没有my.cnf文件只有一个my.cnf.rpmsave文件,上网查了之后发现它是我之前卸载mysql留下的my.cnf的备份文件,我把它重命名为my.cnf,进行内容修改。
[root@ha-01 etc]# mv my.cnf.rpmsave my.cnf
[root@ha-01 etc]# vi my.cnf
如果没有my.cnf文件也不要紧,直接在/etc/下新建一个这个my.cnf文件,把下边内容写进去就行。
内容修改如下
basedir=/usr/local/mysql-8.0/
datadir=/usr/local/mysql-8.0/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
添加mysqld服务到系统
[root@ha-01 mysql-8.0]# cp -a ./support-files/mysql.server /etc/init.d/mysql
[root@ha-01 mysql-8.0]# chmod +x /etc/init.d/mysql #添加权限
[root@ha-01 mysql-8.0]# chkconfig --add mysql # 添加服务
[root@ha-01 mysql-8.0]# service mysql start #启动mysql
Starting MySQL.Logging to '/usr/local/mysql-8.0/data/ha-01.err'.
. SUCCESS!
[root@ha-01 mysql-8.0]# service mysql status #查看启动状态
SUCCESS! MySQL running (11160)#将mysql命令添加到服务
[root@ha-01 mysql-8.0]# ln -s /usr/local/mysql-8.0/bin/mysql /usr/bin#查看临时密码是 YAuK9vuNKT_P
[root@ha-01 mysql-8.0]# cat /var/log/mysqld.log | grep password
2021-11-14T15:39:52.219609Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: YAuK9vuNKT_P
登录mysql mysql -uroot -p YAuK9vuNKT_P
但是,我不知道为什么就是登不上去,总是报这个错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
然后我就换了一种方式登录
先停止mysql服务
再进入mysql安装目录bin/ 使用safe模式,进行重启:
[root@ha-01 bin]# ./mysqld_safe --skip-grant-tables
修改mysql8密码与之前版本不同,具体可以见博客:
修改完密码后,执行 flush privileges; 使密码生效
退出后,重新登录上mysql
解决之前的启动不了 mysqld的情况:
在 cd /usr/local/mysql-8.0/ support-files/ 该路径下输入命令:
将文件mysql.server复制到/etc/init.d/下,
cp ./mysql.server /etc/init.d/
在进入/etc/init.d/下,重命名为mysqld
mv mysql.server mysqld
centos7上mysql安装完毕!
开始设置远程连接
发现root的host是localhost,不是%,可以加个host是%的root账号:
输入:CREATE USER ‘'root'@'%' IDENTIFIED BY '123456';
再查下用户
输入:select host,user from user;
输入:GRANT ALL ON *.* TO 'root'@'%';
配置成功
解决办法参考:连接mysql出现‘mysql执行错误1251'的解决方法_韩韩的博客-优快云博客_1251mysql
出现错误是由于mysql版本问题,mysql8.0版本与mysql5.0版本的加密方式不同,导致出现上述报错
首先进入mysql控制台
输入以下命令:(让你的密码永不过期)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码' PASSWORD EXPIRE NEVER;
再次FLUSH PRIVILEGES;
然后连接mysql front
出现了这个报错,目前还没解决,好像不怎么影响使用。
start-all.sh之后,在启动hive后输入show databases;后出现这个报错:参考博客
在给新用户授权时出现问题了就是下图第二行的error 1396,参考博客:mysql版本:‘for the right syntax to use near ‘identified by ‘password‘ with grant option‘_记录编程生活-优快云博客
后又重新打开hive,初始化了一遍,命令:
cd /export/servers/hive/bin
./schematool -dbType mysql -initSchema
终于解决了这个问题