一、下载安装包:
1、新建文件夹,主要是为了弄个地方放下载的安装文件:
mkdir mysql8
2、进入到创建的mysql8文件夹中,下载mysql文件:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
然后等待它漫长的下载过程吧,如果中途不动了,就终止下载,重新执行这个命令就行,最后会有多个文件,把之前下载的失败的不完整的安装包删除掉就好了 。下载完成后的查看下载结果如下
3、解压下载的mysql压缩包:
tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
解压后查看当前目录的文件,会看到有两个,一个是压缩的,一个是解压后的。
注意: 如果有报错,就按照对应的依赖包(其他报错请留言,一起解决),如:
如果报如下错误,请安装组件
[[email protected] soft]# tar-xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar (child): xz: Cannot exec: No such file or directory
tar (child): Errorisnot recoverable: exiting now
tar: Child returned status2tar: Errorisnot recoverable: exiting now
[[email protected] soft]# yum install-y xz
二、安装过程
1、将解压的文件重命名mysql,并移动到/usr/local目录下
mv mysql-8.0.11-linux-glibc2.12-x86_64mysql
mv mysql/usr/local/
图示:
查看移动后的结果,图示:
2、进入到/usr/local目录下,创建用户组和用户并授权
cd /usr/local/groupadd mysql
useradd-r -g mysql mysql
cd mysql/#注意:进入mysql文件下授权所有的文件
chown-R mysql:mysql ./
图示:
3、到/usr/local/mysql目录下,创建data文件夹
mkdir data
图示:
6、初始化数据库,会生成随机密码,需要记住,一会要用
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
图示:
7、修改/usr/local/mysql当前目录的用户
chown -R root:root ./chown-R mysql:mysql data
图示:
8、复制创建的文件到etc目录并重命名(先创建、在授权、在复制、在重命名)
cd support-files/touch my-default.cnf
chmod777 ./my-default.cnf
cd ../cp support-files/my-default.cnf /etc/my.cnf
图示:
9、编辑配置复制过去的my.cnf文件
cd /cd etc
vim my.cnf
图示,把下边的内容复制到my.cnf文件中:
[mysqld]
character_set_server=utf8
init_connect=‘SET NAMES utf8‘# Remove leading # andset to the amount of RAM forthe most important data
# cachein MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size=128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonlyset, remove the # and set asrequired.
basedir= /usr/local/mysql
datadir= /usr/local/mysql/data
socket= /tmp/mysql.sock
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
tmpdir= /tmp
port= 7766#lower_case_table_names= 1# server_id=.....
# socket=.....
#lower_case_table_names= 2max_allowed_packet=50Mdefault-authentication-plugin =mysql_native_password
#lower_case_file_system=on
#lower_case_table_names= 2log_bin_trust_function_creators=ON
# Remove leading # toset options mainly useful forreporting servers.
# The server defaults are fasterfortransactions and fast SELECTs.
# Adjust sizesasneeded, experiment to find the optimal values.
# join_buffer_size=128M
# sort_buffer_size=2M
# read_rnd_buffer_size=2M
bind-address = 0.0.0.0sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
内容说明:
10、设置开机自启
cd /usr/local/mysql
cd support-files/cp mysql.server/etc/init.d/mysql
chmod+x /etc/init.d/mysql
图示
11、注册服务
chkconfig --add mysql
正常情况是不会出问题的,但是如果提示没有这个命令就需要需求设置一波:
rpm -aq |grep chkconfig
export PATH=/sbin:$PATH
chkconfig
echo $PATH
PATH="$PATH":/sbin
echo $PATH
12、查看是否注册成功:
chkconfig --list mysql
图示:
13、配置 etc/ld.so.conf路径
vim /etc/ld.so.conf
添加以下内容:/usr/local/mysql/lib
图示:
14、配置环境变量
vim /etc/profile
source/etc/profile
添加如下内容:
MYSQL ENVIRONMENT
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
图示:
15、登录
mysql -uroot -p
图示:
报错一:提示未找到命令。
原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,
解决办法:
执行这样的命令:
ln -s /usr/local/mysql/bin/mysql /usr/bin
图示:
报错二:
解决办法:
反手就是一个命令:
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
再次执行登录命令:
哦吼,你会发现又报错了
错误三:
解决办法:
vim /etc/my.cnf
进入编辑my.cnf文件的模式下,在文件中加入一句话: skip-grant-tables (这句话就是设置为免密登录)
设置过后还不能登录还提示报错
先启动mysql :
service mysql start
如果提示无法启动成功就只能先关闭进程了
关闭进程指令:
ps aux |grep ‘mysql*’
关闭mysql的所有进程 ,再次执行上边的启动mysql命令:
在去登录mysql: mysql -uroot -p
进去之后首先先修改密码:
use mysql;select user,authentication_string,host from user;
ALTER USER‘root‘@‘localhost‘ IDENTIFIED BY ‘123456‘;
图示:
记得去吧刚才在my.cnf文件中加的那句话(skip-grant-tables)给注释掉。
16、修改密码
use mysql; #进入数据库select host,user,authentication_string,plugin fromuser; #查看用户信息grant all privileges on *.* to ‘root‘@‘%‘;#授权root用户可以远程登陆
flush privileges; #立即生效
ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘Kuaigui2019!‘; #修改root用户密码
FLUSH PRIVILEGES; #立即生效,这个最后执行。要执行
如果是执行给root用户授权这一步时报错,且错误信息如下:
解决办法:
# 使用mysql 数据库
use mysql;
# 特定用户的host 修改
update userset host=‘%‘ where user=‘root‘;
# 指定用户的授权
grant all privileges on root.* to root@‘%‘;
此时再去查看没看表的变化:
其中root用户的host已经由localhost变成 %了
如果在执行 第五句命令的时候报错,且如下:
解决办法:
回到上一个报错去解决。
最后别忘了执行最后一个命令(FLUSH PRIVILEGES;)
17、退出、重启mysql
# 退出mysql
ctrl+z
# 重启mysql服务
service mysql restart
图示:
到这一步基本都可以说OK了 。
万里长征,还差最后一步,远程连接
三、设置远程连接
1、关闭本地防火墙
2、在my.cnf文件中添加一句话
default_authentication_plugin=mysql_native_password
3、开启linux的防火墙
firewall-cmd --zone=public --add-port=7766/tcp --permanent
firewall-cmd --reload
执行上边命令的时候记得修改成自己的端口号
图示:
4、配置默认编码为utf-8
进入my.cnf文件的编辑模式下,添加以下内容:
character_set_server=utf8
init_connect=‘SET NAMES utf8‘
图示:
编辑完成后保存并退出
重启mysql服务 : service mysql restart
到了这一步,我猜你已经成功了
还有一个报错:
解决办法:
我猜是密码的问题导致的
解决办法,配置免密登录,重启服务,修改密码,(这个过程前边说过了,不重复说)
当以上所有的都没有问题时,用Navicat测试去连接mysql,如果发现连接的时候报错,如下:
那就去把linux的防火墙关掉:
systemctl stop firewalld.service
再去测试连接:
补充:
两个虚拟机之间相互传文件办法:
虚拟机1: 192.168.198.100
虚拟机2: 192.168.116.128
需求:将虚拟机1中的文件传到虚拟机2中。
文件所在虚拟机1中的全路径是: /root/mysql/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
进入到虚拟机2中需要存放的文件夹中,执行如下命令:
scp -r root@192.168.198.100:/root/mysql/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz ./
原文:https://www.cnblogs.com/Zhan-W/p/13162917.html