以下是踩坑无数最后搞定的一套安装方法
安装环境liunx7.6 64位 mysql版8 之前的5.6 5.7 都不想装了,浑身是坑
首先在mysql官网下载包 8.12的版本差不多480M,放在usr local文件夹下
cd /usr/local/
解压tar包
tar -zxvf XXX.tar.gz
将解压后的文件改名为mysql
mv XXX.tar.gz mysql
添加用户组和mysql用户
groupadd mysql和useradd -r -g mysql mysql
【初始化】非常关键,十次安装九次栽在坑里
cd /usr/local/mysql
chown -R mysql:mysql ./
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
(注:这个命令与之前5.7以前版本不一样了,特别注意别搞错了)
我在这里报错了,错误信息如下
bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
查阅资料,接着我执行了如下操作
touch mysql_install_db
chmod 777 ./mysql_install_db
yum install libaio-devel.x86_64
y
然后重新进行初始化,发现并未解决问题,于是我继续找解决方法,执行了如下命令
yum -y install numactl
重新初始化
好的,成功了!
请注意图上面最后一串字符,那是初始化密码,很重要的,请复制自己的密码记下来。
修改当前用户
chown -R root:root
chown -R mysql:mysql data
复制配置文件
cp support-files/my-default.cnf /etc/my.cnf
如果没有my-default.cnf就手动创建一个文件,并且配置权限,注意文件的目录,配权限也一定要操作在对应目录上
touch my-default.cnf
chmod 777 ./my-default.cnf
复制成功之后,修改/etc/my.cnf文件
(图上忘了加utf8)
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
#socket = /var/lib/mysql/tmp/mysql.sock
#socket=/tmp/mysql.sock
socket = /usr/local/mysql/tmp/mysql.sock
character-set-server=utf8
#必填项
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
以上是my.cnf的最基本配置,更多更丰富的配置可以去搜一搜,很多。
如果/usr/local/mysql/目录下没有tmp文件,手动创建,并且配置权限
切记,要在该目录下创建并配置权限
touch tmp
chmod 777 ./tmp
加入开机启动、注册启动服务、查看是否添加成功
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --list mysql
成功会出现mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
配置环境变量
vi /etc/profile
最后一行有path就往后加路径,冒号隔开。没path就直接复制下面这一整句
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
刷一下文件生效
source /etc/profile
下面是激动人心的时刻,启动
serivce mysql start
尴尬报错!
换一句再来
service mysql restart
好了,可算是启动了!
登录
mysql -uroot -p
粘贴输入之前复制的初始密码,注意,密码不显示,输完按确定。
按道理来说,按上面的配置应该没啥问题,如果又报错,还是如下的信息
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
恭喜你,又踩到坑了。
那么我们再来聊聊解决方法,这个报错是我之前报的,那个时候my.cnf里面的socket指向的是报错的这个路径。这个路径的内容偶尔会被删掉,所以我就更改了指向的路径,在上文配置my.cnf的地方可以看到路径。如果你在看这段话,请你注意,你配置的指向路径的文件夹是否存在。不存在的话,就新建一个,并且配置权限,重启一下应该就没什么问题了。
例如我的配置下,在这个目录下新建了tmp文件夹,然后配置权限
chmod 777 /usr/local/mysql/tmp
登录成功之后,界面就进入了mysql
mysql>
修改密码
alter user 'root'@'localhost' identified by '你的密码';
这样就算是完成了。但是还可能存在其他问题。
使用远程连接进行测试,远程无法连接,记得开放服务器端口。
在本地使用sqlyog类似的工具进行远程连接,输入ip,账号密码之后,发现依然不能连接。如果是报如下错误
ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server
猜想是无法给远程连接的用户权限问题。结果这样子操作mysql库,即可解决。特贴出来。。在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。。
mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host' from user where user='root';
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
修改完成之后,再次连接,发现依然不能连接,报错编号2058.
解决方法,登录mysql操作窗口,执行如下
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'
重新连接即可。
以上都是自己一步步操作,踩出来填起来的坑,大家可以对着操作下,应该没问题了。
每个人的环境都是千变万化,我无数次卸载重装失败之后,重装liunx,以一个崭新的系统进行这次mysql8的安装。