此文章写于2020年初,最近我重新按照此方式安装一直有问题,新看了个文章:
8.0.23版本安装
删除老版本的mysql
- 查看mysql的安装情况:rpm -qa|grep -i mysql
- 停止mysql服务,删除mysql
rpm -ev mysql-5.1.73-8.el6_8.x86_64
rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64 - 注意:可能会抛依赖错误错 error:Failed dependencies,则加上 --nodeps不检查依赖关系删除,命令如下
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64 - 删除遗留的mysql文件和依赖库
find / -name mysql
rm -rf /var/lib/mysql - mysql 配置文件还要手动删除
rm -rf /etc/my.cnf - 检查一遍mysql 是否成功删除
rpm -qa|grep -i mysql
去mysql官网下载安装包
放到linux并解压
- 将mysql的安装包放到指定的目录下,解压,我是放在/usr/local
# tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
如果报如下错误,请安装组件
# tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
tar (child): xz: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
# yum install -y xz
- 重命名文件
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
创建用户和用户组并授权
[root@yhx local]# groupadd mysql // 创建用户组
[root@yhx local]# useradd -r -g mysql mysql // 创建用户
进入到mysql下授权所有文件
[root@yhx mysql]# chown -R mysql:mysql ./
同时在mysql文件夹下创建data文件夹
[root@yhx mysql]# mkdir data
初始化数据库
[root@yhx mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果报如下错误:
需要安装libaio包:
yum install -y libaio
# 也有可能是:
yum install -y libaio.so.1
安装完成后重新初始化成功,记下生成的随机密码:
修改data权限:
# chown -R mysql:mysql data
mysql配置
修改/etc/my.cnf文件为:
# MySQL 配置文件,
# 数据库目录 /data/mysql
[client]
port=3306
# mysql socket 文件存放地址
socket=/tmp/mysql.sock
# 默认字符集
default-character-set=utf8
[mysqld]
server-id=1
# 端口
port=3306
# 运行用户
user=mysql
# 最大连接
max_connections=200
socket=/tmp/mysql.sock
# mysql 安装目录(解压后文件的目录)
basedir=/usr/local/mysql
# 数据目录(这里放在我们新建的 /data/mysql 下)
datadir=/data/mysql
pid-file=/data/mysql/mysql.pid
init-connect='SET NAMES utf8'
character-set-server=utf8
# 数据库引擎
default-storage-engine=INNODB
log_error=/data/mysql/mysql-error.log
slow_query_log_file=/data/mysql/mysql-slow.log
# 跳过验证密码
#skip-grant-tables
[mysqldump]
quick
max_allowed_packet=16M
EOF
如果后期mysql运行报错,可以直接到log-error = /usr/local/mysql/data/error.log目录下直接查看错误日志
命令:cat /usr/local/mysql/data/error.log
设置开机自启:
# cd support-files/
# cp mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql
注册服务
# chkconfig --add mysql // 注册服务
# chkconfig --list mysql // 查看服务
etc/ld.so.conf配置路径
# cp ld.so.conf ld.so.conf.d // 备份,上面的my.cnf也是
# vim ld.so.conf
# 添加如下内容:
/usr/local/mysql/lib
配置环境变量
# cp profile profile.d
# vim profile
#在最后添加如下内容:
#MYSQL ENVIRONMENT
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
然后执行:
source profile # 该命令作用为在当前bash环境下读取并执行FileName中的命令。
登录
# mysql -uroot -p
Enter password: # 这里输入之前记录的密码
如果出现以下问题,可能因为丢失套接字文件而不能连接(如上截图错误),你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它
修改密码:
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.00 sec)
开启远程连接
授予root用户可以远程登录:
mysql> GRANT ALL ON *.* TO 'root'@'%';
如果出现以下问题:
mysql> GRANT ALL ON *.* TO 'root'@'%';
ERROR 1410 (42000): You are not allowed to create a user with GRANT
产生用户不能授权的原因是mysql 数据库中user 表中的特定用户(root) 的host 的属性值为localhost。
查看用户信息:(可以看到root用户的host是localhost)
mysql> select host,user authentication_string, plugin from user;
+-----------+-----------------------+-----------------------+
| host | authentication_string | plugin |
+-----------+-----------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+-----------------------+-----------------------+
4 rows in set (0.00 sec)
这里修改root的属性值
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges; # 立即生效
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> exit; # 退出
Bye
重启服务
service mysql restart
然后就可以去navicat查看连接了,多说一句,如果连接不上,先去看看是不是服务器的3306端口没有开放!!!
参考:
https://blog.csdn.net/weixin_42109071/article/details/89375748
https://www.cnblogs.com/yunian139/p/11804965.html