离线安装mysql8

一、先前往官网下载mysql8

下载地址:

https://dev.mysql.com/downloads/

离线安装mysql8_第1张图片

 

选择Linux
离线安装mysql8_第2张图片
离线安装mysql8_第3张图片

二、删除Linux中的mysql(如果有的话),上传安装包
1、先查看mysql是否存在,命令如下:

rpm -qa|grep -i mysql

如果使用这个命令之后没有出现任何内容,表示没有安装过mysql,如果有出现,则删除。

2、如果存在,那么停止mysql,删除所有的服务

离线安装mysql8_第4张图片

 使用如下命令:

find / -name mysql

删除出现的所有文件(如图)
————————————————
 

三、解压安装MySQL

1、在 local 创建 mysql 文件夹

cd /usr/local
mkdir mysql
cd mysql

2、把下载好的mysql安装包上传到 mysql 目录下

3、解压mysql安装包

tar xvJf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

4、重命名解压后的 mysql 文件夹(名字太长了)

mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql8

5、进入解压后的目录,创建 data 存储文件,并赋予权限

cd mysql8
mkdir data

赋予权限
chmod -R 755 /usr/local/mysql/mysql8/data

6、创建用户和用户组

创建mysql组
groupadd mysql
创建mysql用户
useradd -g mysql mysql

离线安装mysql8_第5张图片

7、给用户赋予权限

chown -R mysql.mysql /usr/local/mysql/mysql8

8、切换到 bin 目录下

cd /usr/local/mysql/mysql8/bin

9、初始化 mysql 基本信息

在初始化之前提一嘴,Linux中的MySQL默认是区分表名大小写的,如果你是安装的也是MySQL8,那么不区分大小需要在数据库初始化时设置,不然初始化后,在配置文件在设置重启时是会报错的。

进入MySQL的bin目录进行初始化

./mysqld --user=mysql --basedir=/usr/local/mysql/mysql8 --datadir=/usr/local/mysql/mysql8/data/ --lower-case-table-names=1 --initialize

–lower-case-table-names=1 即设置不区分表名大小写,最后面的 koUi5W173w+ 为初始化生产的临时密码。

10、获取到临时 mysql 密码

离线安装mysql8_第6张图片

 

11、将 mysqld 服务添加到系统中

cd /usr/local/mysql/mysql8
cp -a ./support-files/mysql.server /etc/init.d/mysql

在这里插入图片描述

 

12、授权以及添加mysql服务

授权
chmod +x /etc/init.d/mysql

添加mysql服务
chkconfig --add mysql

在这里插入图片描述

在这里插入图片描述 

 

13、mysql5.7 以后就没有 my.cnf 了,所以我们创建一个。(个人觉得方便一些)

vim /etc/my.cnf

# Example MySQL config file for small systems.  
#  
# This is for a system with little memory (<= 64M) where MySQL is only used  
# from time to time and it's important that the mysqld daemon  
# doesn't use much resources.  
#  
# MySQL programs look for option files in a set of  
# locations which depend on the deployment platform.  
# You can copy this option file to one of those  
# locations. For information about these locations, see:  
# http://dev.mysql.com/doc/mysql/en/option-files.html  
#  
# In this file, you can use all long options that a program supports.  
# If you want to know which options a program supports, run the program  
# with the "--help" option.  
 
# The following options will be passed to all MySQL clients  
[client]  
default-character-set=utf8  
#password   = k0Ui&wV(Z3yt
port        = 3306 
socket      = /tmp/mysql.sock  
 
# Here follows entries for some specific programs  
 
# The MySQL server   
[mysqld]  
 
#配置mysql的文件夹 和 mysql data目录
basedir=/usr/local/mysql/mysql8
datadir=/usr/local/mysql/mysql8/data
default-storage-engine=INNODB  
character-set-server=utf8  
collation-server=utf8_general_ci  
port        = 3306 
socket      = /tmp/mysql.sock  
skip-external-locking  
key_buffer_size = 16K  
max_allowed_packet = 1M  
table_open_cache = 4 
sort_buffer_size = 64K  
read_buffer_size = 256K  
read_rnd_buffer_size = 256K  
net_buffer_length = 2K  
thread_stack = 128K  
 
# Don't listen on a TCP/IP port at all. This can be a security enhancement,  
# if all processes that need to connect to mysqld run on the same host.  
# All interaction with mysqld must be made via Unix sockets or named pipes.  
# Note that using this option without enabling named pipes on Windows  
# (using the "enable-named-pipe" option) will render mysqld useless!  
#   
#skip-networking  
server-id   = 1 
 
# Uncomment the following if you want to log updates  
#log-bin=mysql-bin  
 
# binary logging format - mixed recommended  
#binlog_format=mixed  
 
# Causes updates to non-transactional engines using statement format to be  
# written directly to binary log. Before using this option make sure that  
# there are no dependencies between transactional and non-transactional  
# tables such as in the statement INSERT INTO t_myisam SELECT * FROM  
# t_innodb; otherwise, slaves may diverge from the master.  
#binlog_direct_non_transactional_updates=TRUE  
 
# Uncomment the following if you are using InnoDB tables  
#innodb_data_home_dir = /usr/local/mysql/data  
#innodb_data_file_path = ibdata1:10M:autoextend  
#innodb_log_group_home_dir = /usr/local/mysql/data  
# You can set .._buffer_pool_size up to 50 - 80 %  
# of RAM but beware of setting memory usage too high  
#innodb_buffer_pool_size = 16M  
#innodb_additional_mem_pool_size = 2M  
# Set .._log_file_size to 25 % of buffer pool size  
#innodb_log_file_size = 5M  
#innodb_log_buffer_size = 8M  
#innodb_flush_log_at_trx_commit = 1 
#innodb_lock_wait_timeout = 50 
 
[mysqldump]  
quick  
max_allowed_packet = 16M  
 
[mysql]  
no-auto-rehash  
# Remove the next comment character if you are not familiar with SQL  
#safe-updates  
 
[myisamchk]  
key_buffer_size = 8M  
sort_buffer_size = 8M  
 
[mysqlhotcopy]  
interactive-timeout

sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

lower_case_table_names=l

*设置my.cnf权限

sudo chmod 664 /etc/my.cnf

14、启动mysql服务

service mysql start

如果出现下面报错

解决

/var/lock/subsys/下mysql文件删除 

15、查看mysql服务状态

service mysql status

离线安装mysql8_第7张图片

16、将mysql命令添加到服务,这一步是为了能在任何地方通过用户名和密码登录MySQL

ln -s /usr/local/mysql/mysql8/bin/mysql /usr/bin

17、mysql使用

1、登录 密码使用之前随机生成的密码

mysql -u root -p

2、修改管理员密码 其中123456是新的密码自己设置

切换到mysql库
use mysql;

查询用户表命令
select Host, User from user;

一、如果只是本地访问,直接修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

二、如果想要支持远程登录,需要进行如下设置
设置远程登录
update user set host='%' where user='root';
flush privileges;

修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

离线安装mysql8_第8张图片

可以看到允许访问root的host有哪些,%表示所有,这里只有localhost,修改密码不成功可以看一下root对应的host的值。 

18、踩坑

启动报错

如果启动时报如下错

在这里插入图片描述

一个原因是上面新建的data目录没有权限,使用如下命令加上:

chmod -R 755 /usr/local/mysql/mysql8/data

将data目录改为你的data目录,然后再使用

在这里插入图片描述

然后再启动mysql

在这里插入图片描述

可以看到报错比上面少了,接下来看看上面报错的日志,使用命令:

cat /usr/local/mysql/mysql8/data/iZ7xvbz75ed3prrdah1kceZ.err

 离线安装mysql8_第9张图片

前面在初始化时设置了表明大小写不敏感,这里要在mysql的配置文件中显示设置一下

离线安装mysql8_第10张图片

保存退出,然后重启mysql

离线安装mysql8_第11张图片 

成功启动。 

登录mysql时报错

离线安装mysql8_第12张图片

可能是挂载的路径错了,到挂载目录查看,命令如下:

cd /usr/bin

 可以看到mysql服务是红色的,并且一直在闪,正常的应该是绿色的。

离线安装mysql8_第13张图片

我当前的mysql根目录是8.0.32,添加的时候写成了8.0.31,怪不得会报错。 

解决办法:删除当前mysql的服务,重新添加。

先删除,命令如下:

rm -rf /usr/bin/mysql

 重新添加:

ln -s /usr/local/mysql/mysql-8.0.32/bin/mysql /usr/bin

可以看到mysql服务添加成功,可以登录mysql了。

离线安装mysql8_第14张图片

设置简单密码报错 

 

初次修改密码时,如果设置过于简单的密码可能会报错,可以使用命令

show variables like 'validate_password%';

validate_password_policy 的默认值为 1 或者 MEDIUM,表示密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
validate_password_length 的默认值为 8,表示密码长度为8。

注意查看密码安全策略的这步,只有初始密码登录MySQL才能查到结果,修改密码再次使用此命令查询没有结果。

设置简单密码策略

set global validate_password_policy=0;

设置密码长度

set global validate_password_length=6;

这样设置之后就可以将密码修改为“123456”了。

(2)修改密码报错
有些朋友修改密码时会报错,原因可能就在这里,假如你修改密码的命令为:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

那么是没有问题的,如果你修改密码的命令为:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

那么可能就会报错。

解决办法,使用如下命令:

update user set Host='%' where User='root';
1
将root用户对应的Host改为“%”再重新修改密码就行了。

记得修改密码后用命令

flush privileges;
离线安装mysql8_第15张图片

 

你可能感兴趣的:(mysql,adb)