MySQL 安装
windows 安装
windows 不建议从官方下载安装包进行安装,那种方式安装配置非常复杂。并且服务器一般是在 Linux 环境安装,而 Windows 环境下顶多是作为开发环境或者学习环境,当然是怎么简单怎么来。
在这里我推荐使用 phpstudy 进行安装,只要用鼠标点几下就能按照,需要使用的时候,启动一下即可。
1、下载小皮软件,解压进行安装, 点击下载
2、在软件中启动数据库
3、使用工具链接本地地址与默认的端口,默认的用户密码都为 root ,之后就可以进行操作了。
Linux 安装
Ubuntu22.04 安装 MySQL
系统更新
sudo apt update
sudo apt upgrade
1、MySQL安装
sudo apt-get install mysql-server mysql-client
2、查看 MySQL 默认用户密码
sudo cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = qGZpZvUEPkCuuXMF
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = qGZpZvUEPkCuuXMF
socket = /var/run/mysqld/mysqld.sock
3、用默认用户密码登录
mysql -u debian-sys-maint -p
4、修改 root 远程登录的 ip 为 %
,意思是允许所有的 ip 远程访问
use
mysql;
update user
set host = '%'
where user = 'root' limit 1;
flush
privileges;
4、修改 root 密码
update user set plugin='caching_sha2_password' where user='root';
修改配置文件
打开 mysql 配置文件,注释 3306 端口于本地的绑定
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address = 127.0.0.1
重启MySQL
sudo service mysql status # 查看状态
sudo service mysql start # 启动数据库
sudo service mysql stop # 停止数据库
sudo service mysql restart # 重启数据库
目录结构分析
MySQL 安装后的目录结构分析(此结构只针对于使用apt-get install 在线安装情况)
数据库存放目录: /var/lib/mysql/
相关配置文件存放目录: /usr/share/mysql
相关命令存放目录: /usr/bin(mysqladmin mysqldump等命令)
启动脚步存放目录: /etc/rc.d/init.d/
添加用户
新建一个用户
-- 使用 mysql 数据库
USE mysql;
-- 创建用户
create user 'windows'@'%' identified by 'Zhengxin...123456';
-- 查看用户
SELECT user, host, authentication_string
FROM user
WHERE USER = 'windows';
-- 修改用户密码
update user
set authentication_string=''
where user = 'windows';
ALTER USER 'windows'@'%' IDENTIFIED BY 'Zhengxin...123456';
-- 删除用户
DROP USER windows;
-- 查看权限
SHOW GRANTS FOR windows;
-- 授予权限
-- grant all privileges on databasename.tablename to 'user'@'host' identified by 'password';
-- 授予 windows 用户全局级全部权限:
-- GRANT ALL PRIVILEGES ON *.* TO 'windows'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'windows'@'%' WITH GRANT OPTION;
-- 授予 windows 用户针对 testdb 数据库全部权限:
GRANT ALL PRIVILEGES ON *.* TO 'windows';
-- 生效(刷新权限)
FLUSH PRIVILEGES;
-- 撤销权限
-- revoke privileges on databasename.tablename from 'username'@'host';
REVOKE ALL PRIVILEGES FROM windows;
-- windows2 Zhengxin...123456
GRANT ALL PRIVILEGES ON *.* TO 'windows2'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'windows2';
GRANT命令说明:
priveleges (权限列表),可以是 all priveleges , 表示所有权限,也可以是 select、update 等权限,多个权限的名词,相互之间用逗号分开。
on 用来指定权限针对哪些库和表。
*.*
中前面的*
号用来指定数据库名,后面的*
号用来指定表名。 to 表示将权限赋予某个用户,@后面接限制的主机,可以是 IP , IP 段,域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个 localhost 的用户就可以了。identified by 指定用户的登录密码,该项可以省略。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定 WITH GRANT OPTION 选项导致后来该用户不能使用 GRANT 命令创建用户或者给其它用户授权。
备注:可以使用 GRANT 重复给用户添加权限,权限叠加,比如你先给用户添加一个 select 权限,然后又给用户添加一个 insert 权限,那么该用户就同时拥有了 select 和 insert 权限。
授权原则说明:
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给 select 权限就可以了,不要给用户赋予 update、insert 或者 delete 权限。
创建用户的时候限制用户的登录主机,一般是限制成指定 IP 或者内网 IP 段。
初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
为每个用户设置满足密码复杂度的密码。
定期清理不需要的用户。回收权限或者删除用户。