1,先去官网下载包,并通过xftp传到虚拟机上
2,检查linux有没有安装mysql(rpm -qa|grep -i mysql),有的话卸载
(rpm -e mysql-*.*.*-linux(对应文件名) --nodeps)
3,创建mysql 的用户组/用户(有的话,先删除,不然会报错),data目录及其用户目录
userdel mysql # 删除用户
groupdel mysql # 删除用户组名
mkdir /home/mysql # 在home文件夹下创建文件夹mysql
mkdir /home/mysql/data # 在mysql文件夹下创建文件夹data
groupadd mysql # 创建一个名为mysql的用户组
useradd -g mysql -d /home/mysql mysql # 在用户组下创建用户
4,运行解压命令 tar -zxvf 文件名 ,(可以更改解压文件目录和文件名),放在自己想放的位置
5,mysql8不再有my.cnf文件,所以自己创建一个(vim /etc/my.cnf),做好自己的配置,或者直接通过xftp上传一个my.cnf文件放到/etc下面(my.cnf可以参看下面)
[mysqld]
port=3306
basedir=/home/mysql
datadir=/home/mysql/data
socket=/tmp/mysql.sock
log-error=/home/mysql/data/error.log
pid-file=/home/mysql/data/mysql.pid
user=mysql
tmpdir=/tmp
character_set_server=utf8
default-storage-engine=INNODB
init_connect='SET NAMES utf8'
default_authentication_plugin=mysql_native_password
[client]
port=3306
default-character-set=utf8
6,初始化mysql数据库 ./bin/mysqld --initialize
(网上有的地方写的是./bin/mysqld --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data --initialize,然后安装成功会有提示用户root的一个随机密码生成,这里没有,这些信息全在my.cnf配置的datadir目录下的日志文件中,其实没多大作用,后面改密码可以直接使用非密码验证登录,将第六步和第五步执行顺序颠倒也行,但是,安装时,需要指定 user ,basedir,datadir).
7,配置mysql服务
cp 文件目录/support-files/mysql.server /etc/init.d/mysqld //复制启动文件
chmod 755 /etc/init.d/mysqld //增加执行权限
如果想配置服务开机自启,请自行解决
然后启动mysql服务(service mysqld start)
8,初始化mysql用户root的密码
直接运行mysql -uroot -p,回车,提示输入密码,因为在前面已经在my.cnf配置了skip-grant-tables,跳过了权限验证,所以直接回车就进来了
如果使用使用的全局mysql,会报找不到mysql.sock,创建一个软连接即可
另外mysql8 里面没有password字段和PASSWORD函数,密钥默认验证使用的不是mysql_native_password,所以在my.cnf配置default_authentication_plugin=mysql_native_password
改密码步骤:
1,use mysql
2,update user set authentication_string = '123456' where user='root';
这个地方会有问题,因为一开始就在my.cnf指定了default_authentication_plugin=mysql_native_password,而mysql又没有PASSWORD,所以最后存的密码就是‘123456’
这里可以从其他地方知道123456在mysql存的为*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
所以可以执行
update user set authentication_string = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' where user='root';
如果想简单,可以将/home/mysql/data文件夹清空,然后修改my.cnf,把default_authentication_plugin=mysql_native_password,而mysql又没有PASSWORD这段暂时去掉,重装mysql等密码初始化好了后在加上。
3,修改成功后,将my.cnf里面的skip-grant-tables去掉,然后重启mysql生效。
如果登陆的时候提示密码过期,回到第2步,执行下面命令,设置密码不过期
再回到第三步,如果还有问题可以根据所显示问题来解决
8,mysql远程授权
使用grant命令一直报错,说没有权限
所以干脆改表
将host改为%(%表示允许远程)
刷新一下即可。