注意:mysql8.0及以上版本如果要设置忽略大小写,必须要在数据库初始化之前加上忽略的配置,安装完成之后再去改配置行不通,会导致无法启动
删除自带的数据库
rpm -qa |grep mysql
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
开始安装
1)、将安装包上传至服务器并解压:
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
2)、将解压后的文件夹重名名为“mysql”,并将其移动到 /usr/local/src目录下面
mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
mv ./mysql/ /usr/local/src/
3)、切换目录到usr/local/src下,并使用命令创建用户组和用户
cd /usr/local/src/
groupadd mysql
useradd -r -g mysql mysql
4)、为/usr/local/src/mysql/目录下所有文件授权
5)、在/usr/local/src/mysql/目录下新建一个文件夹data
mkdir data
6)、修改/usr/local/src/mysql/当前目录的用户
执行命令时可以看到本目录下所有的文件夹和文件的拥有者发生了变化(变更前拥有者是mysql,变更后拥有者是root)
命令:
chown -R root:root ./
chown -R mysql:mysql data
7)、进入support-files目录,并在该目录下新建一个文件,文件名为my-default.cnf,并赋所有权限。再把该文件复制到/etc目录下,并将文件重命名为my.cnf
创建文件:
touch my-default.cnf
赋权限:
chmod 777 ./my-default.cnf
复制文件到/etc目录下并重命名为my.cnf:
cp /usr/local/src/mysql/support-files/my-default.cnf /etc/my.cnf
8)、打开/etc/my.cnf文件,并将配置写入该文件并保存。
文件内容:
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in 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 commonly set, remove the # and set as required.
basedir = /usr/local/src/mysql
#MySQL的安装路径
datadir = /usr/local/src/mysql/data
#MySQL数据库文件存放路径
socket = /tmp/mysql.sock
#skip-grant-tables
#该参数可以让MYSQL服务器不加载权限判断,任何用户都能访问数据库。也就是说,启用这个参数之后,数据库的安全性会降低
log-error = /usr/local/src/mysql/data/error.log
#报错日志存放路径
pid-file = /usr/local/src/mysql/data/mysql.pid
#此目录被MySQL用来保存临时文件.例如,它被用来处理基于磁盘的大型排序,和内部排序一样.以及简单的临时表.
# 如果你不创建非常大的临时文件,将其放置到 swapfs/tmpfs 文件系统上也许比较好.另一种选择是你也可以将其放置在独立的磁盘上.
# 你可以使用”;”来放置多个路径,他们会按照roud-robin方法被轮询使用.
tmpdir = /tmp
port = 3306
#MySQL端口(默认是3306)
lower_case_table_names = 1
#不区分大小写(1是不区分大小写,0是区分大小写)
# server_id = .....
# socket = .....
#lower_case_table_names = 1
max_allowed_packet=32M
default-authentication-plugin = mysql_native_password
#lower_case_file_system = on
#lower_case_table_names = 1
log_bin_trust_function_creators = ON
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
skip-name-resolve
#该选项禁用DNS解析,解决mysql在远程访问时非常慢的问题。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
9)、初始化数据库,并会自动生成随机密码,记下等下登陆要用
初始化命令:
/usr/local/src/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/src/mysql --datadir=/usr/local/src/mysql/data
初始化完成后可以看到data目录下出现了一些文件
如果需要重新初始化可以把这些文件删除,重新执行初始化语句
正常情况下:
可以看到初始密码是:wyZ,0JN+e#S-
但是我初始化的时候并没有看到这些信息:
我发现在data目录下有个error.log可以查看到初始密码
10)设置开机自动启动mysql的功能
1、切换目录:
cd /usr/local/src/mysql/support-files
2、 将当前目录下的mysql.server文件拷贝到/etc/init.d/目录下,并将文件重命名为mysql,
cp mysql.server /etc/init.d/mysql
3、给/etc/init.d/mysql文件赋予可执行权限:
cd /etc/rc.d/init.d/
chmod +x mysql
11)、为了开机能自动启动,需要向linux系统注册服务,命令是:
chkconfig --add mysql
如果该命令执行报错,请看这篇文章的第11点进行解决:https://blog.csdn.net/weixin_42109071/article/details/89375748
并使用命令
chkconfig --list mysql
查看是否成功,只要有信息展示说明就是成功了
12)、打开/etc/ld.so.conf文件,并把路径“ mysql安装路径/lib ”添加到该文件中,不然会报错。(注意,etc目录下有一个跟该文件同名的文件夹,但我们此处要编辑的是文件而不是文件夹,不要搞错了。)
13)、配置环境变量
1、将“ /usr/local/src/mysql/bin” 和“ /usr/local/src/mysql/lib ”的路径添加到/etc/profile文件的export PATH=$PATH: 冒号后面并保存该文件(如果有多个环境变量,需使用英文冒号分隔开)
vi /etc/profile
环境变量一、/usr/local/src/mysql/bin
环境变量二、/usr/local/src/mysql/lib
两个环境变量之间使用英文冒号隔开
export PATH=$PATH:/usr/local/src/mysql/bin:/usr/local/src/mysql/lib
2、为了在不重启的前提下可以让环境变量立即生效,需执行命令:
source /etc/profile
- 启动mysql服务:
service mysql start
15)、使用mysql -uroot -p登录mysql,并输入随机生成的密码。
这是刚刚生成的随机密码
!dGlnxo.c5)L
可能遇到的问题:找不到初始密码,或者以后忘记密码了
免密码登陆
1:免密码登陆
找到mysql配置文件:my.cnf,
在【mysqld】模块添加:
skip-grant-tables
保存退出;
2://使配置生效
重启mysql服务:
service mysql restart
3://将旧密码置空
mysql -u root -p //提示输入密码时直接敲回车。
//选择数据库
use mysql
//将密码置空
update user set authentication_string = '' where user = 'root';
//退出
quit
4:去除免密码登陆
删掉步骤1的语句
skip-grant-tables
重启服务
service mysqld restart
5://修改密码
mysql -u root -p //提示输入密码时直接敲回车,刚刚已经将密码置空了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123@xxx';//'abc123@xxx' 密码形式过于简单则会报错
如果报错 ERROR 2002,提示因丢失了套接字文件导致不能连接mysql
解决:通过reboot命令重启一下服务器可以解决该问题
修改初始密码
再次进入mysql,并输入初始密码(随机生成),同时把初始密码修改为自己想要的密码,
命令为:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; #(密码设置的过于简单可能报错)
FLUSH PRIVILEGES; #立即生效
16)、开启远程连接:
use mysql; #使用该命令进入“mysql”这个自带的库
select host, user, authentication_string, plugin from user; # 查看用户信息
update user set host="%" where user="root"; # 任意ip都可访问(允许远程连接数据库)
flush privileges; #立即生效
quit; #退出登录
可能遇到的问题
注意:在user mysql时可能报错
“ ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. ”
此时执行如下SQL语句可解决:
ALTER USER USER() IDENTIFIED BY 'root'
17)、在使用navicat连接mysql的时候,可能会发现很慢,不只是连接。打开库、表、执行查询时都有可能存在该问题。那么可能是由于mysql在安装时配置文件中没有加一个参数,只需要把该配置项加入,重启mysql即可解决该问题。
直接打开 /etc/my.cnf/文件,在文件中加入:
skip-name-resolve
保存文件,重启mysql即可。
18)使用navicat测试一下,看看是否可以正常连接使用