linux安装mysql8(避坑)
1、从mysql官网下载mysql的tar包 ,下载地址:
https://dev.mysql.com/downloads/mysql/
根据自己的操作系统选择不同版本,比如我的linux是Red hat,而且centos版本是7 就选对应的,
linux查看系统版本
cat /proc/version
--或者
cat /etc/redhat-release
2、通过 ssh secure file transfer 工具将本地下载的mysql tar包传输到/usr/local/mysql目录下
如果/usr/local目录下没有mysql文件夹,在/usr/local下新建mysql 文件夹
mkdir mysql
3、进入/usr/local/mysql 解压
tar -xzvf mysql-8.0.27-el7-x86_64.tar.gz
解压后会生成mysql-8.0.27-el7-x86_64文件夹,重命名该文件夹
mv mysql-8.0.27-el7-x86_64 mysql8.0
进入/usr/local/mysql/mysql8.0 新建data文件夹,用于存放mysql数据
mkdir data
创建mysql用户和mysql用户组,执行
groupadd mysql useradd -g mysql mysql
例如:
改变mysql目录权限
chown -R mysql.mysql /usr/local/mysql/mysql8.0
注意每个人安装mysql的目录可能不一样,要把/usr/local/mysql/mysql8.0 路径替换成你自己的
初始化数据库之前 查看/etc目录下是否有mysql的配置文件 my.cnf
cat /etc/my.cnf
这里的my.cnf等同于 windows文件夹里面的my.ini
如果没有这个文件夹 则跳过下面的直接执行第4 部。 如果有my.cnf文件夹,检查basedir和datadir以及其他涉及mysql存放路径的,都要改成你现在的mysql路径,比如我的是/usr/local/mysql/mysql8.0, 那么datadir=/usr/lcoal/mysql/mysql8.0/data , basedir=/usr/local/mysql/mysql8.0
4、初始化
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql8.0 --datadir=/usr/local/mysql/mysql8.0/data
查看mysql8.0目录下是否生成 mysql-error.log文件,mysql临时密码存放在这里面
这时候使用 mysql -uroot -p 登录mysql会提示 command not found
因为系统默认会查找/usr/bin下命令,需要将mysql命令映射到/usr/bin下
cd /usr/local/bin ln -fs /usr/local/mysql/mysql8.0/bin/mysql mysql
把/usr/local/mysql/mysql8.0 换成你自己的mysql目录
这样就可以执行 mysql -uroot -p 登录mysql
密码输入刚才获得的临时密码
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
--刷新密码
flush privileges;
要是想在其他服务器远程登录该mysql
还需要修改root访问权限
grant all privileges on *.* to 'root' @'%' identified by 'root';
--或者
update user set host ='%' where user ='root' and host ='localhost'; flush privileges;
忘记密码 需要修改/etc/my.cnf, 在[mysqld]下添加一行
skip-grant-tables
登录后修改密码
use mysql;
update user set authentication_string='' where user='root';
然后退出,重启mysql
service stop mysqld
--无法使用上面这行命令Stop mysql的时候,使用kill -9 来杀死mysqld进程
ps -ef |grep mysqld
kill -9 pid(进程号) --启动 sh ./support-files/mysql.server start
不知道重启的时候
systemctl restart mysqld.service命令为什么不能用
然后可以无密码登录
--登录后修改密码
ALTER USER ‘root'@‘localhost' IDENTIFIED WITH mysql_native_password BY ‘111111'; flush privileges
注意:执行上面语句会出现 o rows affected
但是密码已经被修改了,不影响