一,下载安装mysql
1.下载mysql
打开官网下载mysql,官网地址:MySQL :: Download MySQL Community Server (Archived Versions)
2.解压mysql
将下载好的tar包上传到Linux服务器,并进行解压
[root@localhost backup]# ll
-rw-r--r--. 1 root root 490922012 5月 16 11:02 mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
[root@localhost backup]# tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
将解压好的mysql文件夹命名为mysql
[root@localhost backup]# mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
3.创建用户组及用户
[root@localhost backup]# groupadd mysql
[root@localhost backup]# useradd -g mysql mysql
创建mysql用户组及用户的目的:
(1)安全:
分离权限:使用独立的MySQL用户和用户组运行MySQL服务,可以防止数据库进程以root或其他特权用户身份运行。这样即使MySQL服务器被攻击,潜在的危害也会被限制在这个特定用户的权限范围内。
降低风险:如果MySQL程序有漏洞,或者配置不当导致安全问题,攻击者获取到的权限将受限于这个专门的MySQL用户,而不是具有系统完全控制权的root用户。
(2)权限管理:
精细控制:为MySQL创建单独的用户和用户组使得对文件和目录权限的管理更加容易。例如,可以通过更改文件的所有者和组来确保只有MySQL用户和用户组才能访问数据库文件。
防止意外修改:非MySQL用户不会直接拥有对数据库文件的访问权限,从而减少了由于误操作或恶意行为而破坏数据的风险。
(3)兼容性与一致性:
不同Linux发行版之间的差异:虽然创建用户的方法大体相同,但每个发行版可能有一些细节上的不同。通过自己创建用户和用户组,可以确保在任何发行版上都能按照一致的方式进行安装。
安装包预设:如果你使用的是Linux发行版提供的预编译安装包,那么这些工作通常已经由安装脚本完成。手动创建用户和用户组是为了保持与这种做法的一致性。
(4)最佳实践:
根据Unix/Linux的安全模型,最小化每个进程所需的权限是一种最佳实践。为MySQL创建一个专用用户和用户组符合这一原则,因为它只赋予了运行MySQL所需的确切权限。
4.授权用户组
[root@localhost mysql]# chown -R mysql.mysql /home/mysql
5.修改配置文件
[root@localhost mysql]# vim /etc/my.cnf
[mysqld]
# mysql可在其他服务器连接配置
bind-address=0.0.0.0
# mysql端口
port=3306
#mysql用户,注:该用户
user=root
# mysql安装目录地址
basedir=/home/mysql/mysql
#mysql数据文件地址
datadir=/home/mysql/data
#服务器端连接文件
socket=/home/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#该配置为mysql数据库大小写区分标识,0:区分大小写,1:不区分大小写,默认为:0
lower_case_table_names=1
[mysqld_safe]
# mysql日志文件存储路径及文件
log-error=/home/mysql/mysql.log
# mysql进程存储路径及文件
pid-file=/home/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
#
# include all files from the config directory
#
# mysql客户端配置
[client]
# mysql可在其他服务器连接配置
bind-address=0.0.0.0
port=3306
socket=/home/mysql/mysql.sock
6.初始化安装
切换到mysql的bin目录下进行初始化
[root@localhost bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/home/mysql/mysql --datadir=/home/mysql/data/ --user=mysql --initialize
初始化完成后,会返回mysql的初始登录密码
2024-05-16T03:36:56.482728Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: upU(,KF5#t>(
其中root@localhost:后面的皆为mysql初始登录密码
二,启动并连接mysql
1.启动mysql
启动mysql,切换到mysql安装目录的support-files文件夹下,执行启动脚本,显示SUCCESS即为启动成功
[root@localhost support-files]# ./mysql.server start
Starting MySQL SUCCESS!
本地连接mysql服务,注:在连接mysql服务之前,需要将mysql服务添加到环境变量中
2.mysql环境变量配置
[root@localhost support-files]# vim ~/.bashrc
打开环境变量配置文件,添加:export PATH=$PATH:/home/mysql/mysql/bin 即可,重启环境变量文件即可:source ~/.bashrc
3.启动mysql
[root@localhost support-files]# mysql -u root -p
Enter password:
输入初始密码即可连接成功
4.修改密码并登录
更新用户初始密码,退出登录后再次通过初始密码访问
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
5.外部服务器访问配置
mysql> use mysql; #切换到mysql数据量
mysql> select host,user from user; #查看当前数据库所有用户
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
7 rows in set (0.00 sec)
mysql> update user set host = '%' where user = 'root'; # 修改用户名为root的host为%
mysql> FLUSH PRIVILEGES; # 刷新权限
mysql> select host,user from user; # 查看修改结果
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
配置完成,即可在windows通过Navicat进行访问
三,mysql其他命令
1.mysql退出登录
mysql> exit
# 或者
mysql> quit
2.mysql关闭命令
[root@localhost support-files]# ./mysql.server stop
3.mysql状态查询命令
[root@localhost support-files]# ./mysql.server status
SUCCESS! MySQL running (102929)
4.mysql重启命令
[root@localhost support-files]# ./mysql.server restart
四,mysql创建用户及分配权限
-- 创建用户
CREATE USER '数据库名'@'localhost' IDENTIFIED BY '密码';
-- 创建权限
GRANT SELECT, INSERT, UPDATE, DELETE ON 数据库名.* TO '数据库名'@'localhost';