卸载旧版本
rpm -qa|grep -i mysql
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
find / -name mysql
rm -rf 找到的所有目录
删除配置
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d/
查看glibc并选择安装包
ldd --version 查看 glibc的版本为2.17
mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz
解压tar -xvf 官网下载tar.xz 包
添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
授权
cd /usr/local/mysql
mkdir data
chown -R root . #注意这里 有个点
#chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;
chown -R mysql:mysql ./
#mysql用户只需作为mysql/data/目录下所有文件的所有者
chown -R mysql data
加入环境变量 这样可以在任何地方用mysql命令了
vi /etc/profile
#到最下面 添加
export PATH=$PATH:/usr/local/mysql/bin
#刷新
source /etc/profile
新建mysql配置项
vi /etc/my.cnf
配置如下:
[mysqld]
lower-case-table-names = 1 #忽略表字段大小写,mysql8忘记了要重新初始化
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
user = mysql
tmpdir = /tmp
symbolic-links=0
[mysqld_safe]
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
初始化
lower-case-table-names 忽略表字段大小写,mysql8忘记了要重新初始化
进入bin 执行
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize --lower-case-table-names=1
#将mysql/目录下除了data/目录的所有文件,改回root用户所有
打服务 复制启动文件
回到mysql目录执行
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp bin/my_print_defaults /usr/bin/
修改启动脚本
vi /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
port=3306
启动mysql
service mysqld start
如启动失败删除 /usr/local/mysql/data下所有文件,
重新执行 初始化步骤
再启动
重置密码-修改配置方法 另外 /usr/libexec/mysqld --skip-grant-tables 也是同理
1.vi /etc/my.cnf
2.在[mysqld]下面面任意一行添加 skip-grant-tables
3.重启进入 此时无需密码 直接回车进入
mysql -uroot -p -P3306
4.接下来就是用sql来修改root的密码
mysql5.7 这样改
mysql> use mysql;
mysql> update user set authentication_string=password("123456") where user="root";
mysql> update user set host = '%' where user ='root';
mysql> update user set password_expired='N' where user='root';//将密码设置为永不过期
mysql> flush privileges;
mysql> quit
mysql8这样改
mysql> use mysql;
mysql> select user,host,password_expired from user;
1.先将密码置空 并刷新
mysql> update user set authentication_string='' where user='root';
mysql> flush privileges;
2执行
mysql> update user set host = '%' where user ='root';
mysql> flush privileges;
3.改新密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges;
mysql> ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
5.vi /etc/my.cnf ,去掉skip-grant-tables,然后重启MySQL。大功告成!
将host设置为 % 的含义:
%是个通配符,模糊匹配访问id Host=192.168.1.%, 如果Host=%,表示所有IP都有连接权限。