mysql CentOS安装

一、rpm包安装

1.检查当前系统是否安装过 Mysql

rpm -qa|grep mariadb

在这里插入图片描述
卸载自带的mariadb

 rpm -e --nodeps mariadb-libs

2.下载mysql

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

3.安装mysql

yum -y install mysql57-community-release-el7-10.noarch.rpm

yum -y install mysql-community-server

4.启动mysql

systemctl start  mysqld.service

5.查看状态

systemctl status mysqld.service

6.查看root初始密码

grep "password" /var/log/mysqld.log

7.登录mysql修改初始密码

mysql -uroot -p

#修改密码 new password为新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

若修改的密码是弱密码则需要修改密码策略

vi /etc/my.cnf

添加validate_password_policy配置

选择0(LOW),1(MEDIUM),2(STRONG)其中一种

#添加validate_password_policy配置
validate_password_policy=0
#关闭密码策略
validate_password = off

重启mysql服务使配置生效

systemctl restart mysqld

8.开启mysql远程访问

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

flush privileges; 
exit;

9.修改字符编码

vi /etc/my.cnf

修改以下内容


[mysqld]
character_set_server=utf8mb4
[mysql]
default-character-set=utf8mb4

10.设置大小写不敏感
查看大小写是否敏感

show variables like '%lower_case_table_names%'

设置大小写不敏感

vi /etc/my.cnf

在 [mysqld] 中加入 lower_case_table_names = 1

[mysqld]
lower_case_table_names = 1

11.sql_model设置

sql_mode 定义了对 Mysql 中 sql 语句语法的校验规则!
sql_mode 是个很容易被忽视的变量, 默认值是空值, 在这种设置下是可以允许一些非法操作的, 比如允许一些非法数据的插入。 在生产环境必须将这个值设置为严格模式, 所以开发、 测试环境的数据库也必须要设置, 这样在开发测试阶段就可以发现问题。

sql_model常用值:

常用值描述
ONLY_FULL_GROUP_BY对于 GROUP BY 聚合操作, 如果在 SELECT 中的列, 没有在 GROUP BY 中出现,那么这个 SQL 是不合法的, 因为列不在 GROUP BY 从句中
NO_AUTO_VALUE_ON_ZERO该值影响自增长列的插入。 默认设置下, 插入 0 或 NULL 代表生成下一个自增长值。 如果用户 希望插入的值为 0, 而该列又是自增长的, 那么这个选项就有用了
STRICT_TRANS_TABLES在该模式下, 如果一个值不能插入到一个事务表中, 则中断当前的操作, 对非事务表不做限制
NO_ZERO_IN_DATE在严格模式下, 不允许日期和月份为零
NO_ZERO_DATE设置该值, mysql 数据库不允许插入零日期, 插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO在 INSERT 或 UPDATE 过程中, 如果数据被零除, 则产生错误而非警告。 如 果未给出该模式, 那么数据被零除时 MySQL 返回 NULL
NO_AUTO_CREATE_USER禁止 GRANT 创建密码为空的用户
NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译, 那么抛出错误。 不设置此值时, 用默认的存储引擎替代, 并抛出一个异常
PIPES_AS_CONCAT将||视为字符串的连接操作符而非或运算符, 这和 Oracle 数据库是一样的,也和字符串的拼接函数 Concat 相类似
ANSI_QUOTES启用 ANSI_QUOTES 后, 不能用双引号来引用字符串, 因为它被解释为识别符
ORACLE设置等同于 PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE,NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

查看和修改:
查看当前的 sql_mode: select @@sql_mode;
临时修改 sql_mode: set @@sql_mode=’’;
永久修改, 需要在配置文件 my.cnf 中修改:

vi /etc/my.cnf
[mysqld]
sql_mode=’’

二、docker安装

1.编写docker脚本

#!/bin/bash

docker stop mysql
docker rm mysql
docker run --name mysql --restart=always \
    -v `pwd`/conf:/etc/mysql/conf.d \
    -v `pwd`/data/:/var/lib/mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD="root" \
    -e TZ=Asia/Shanghai \
    -d mysql:5.7.9

配置文件/conf/my.cnf

[mysql]
default-character-set=utf8mb4

[mysqld]
federated
default-storage-engine=INNODB
character_set_server=utf8mb4

datadir = /var/lib/mysql
port = 3306
socket = /var/run/mysqld/mysqld.sock
lower_case_table_names=1
ft_min_word_len=1
max_allowed_packet=100M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_connections = 32000

其他参数请参照rpm安装修改my.cnf

三、配置

参数路径描述备注
– datadir/var/lib/mysql/mysql 数据库文件的存放路径-----
–basedir/usr/bin相关命令目录mysqladmin mysqldump 等命令
–plugin-dir/usr/lib64/mysql/pluginmysql 插件存放路径-----
–log-error/var/lib/mysql/jack.atguigu.errmysql 错误日志路径-----
–pid-file/var/lib/mysql/jack.atguigu.pid进程 pid 文件-----
–socket/var/lib/mysql/mysql.sock本地连接时用的 unix 套接字文件-----
-----/usr/share/mysql配置文件目录mysql 脚本及配置文件
-----/etc/init.d/mysql服务启停相关脚本-----

MySQL 不会主动去创建日志文件,所以需要在my.cnf中手动添加,添加完成后赋予所有用户可读可写权限,否则会报 premission denied

# 开启通用日志
general_log=1
# 通用日志地址
general_log_file=/usr/local/mysql/mysql-5.7/log/general.log
# 开启慢查询日志
slow_query_log=1
# 慢查询日志地址
slow_query_log_file=/usr/local/mysql/mysql-5.7/log/slowqueries.log
# 慢查询阀值
long_query_time=5
# 输出方式,FILE表示文件,TABLE表示数据库(可以在mysql库中看到日志),可以同时使用,方法如上,也可单独使用比如log_output='FILE',输出到文件比输出到数据库效率高
log_output='FILE,TABLE'

四、mysql用户权限

4.1 用户管理

1.相关命令

命令描述备注
create user zhang3 identified by ‘123123’;创建名称为 zhang3 的用户,密码设为 123123;-----
select host,user,password,select_priv,insert_priv,drop_privfrom mysql.user;查看用户和权限的相关信息-----
set password =password(‘123456’)修改当前用户的密码-----
update mysql.user set password=password(‘123456’) where user=‘li4’;修改其他用户的密码所有通过 user 表的修改, 必须用 flush privileges;命令才能生效
update mysql.user set user=‘li4’ where user=‘wang5’;修改用户名所有通过 user 表的修改, 必须用 flush privileges;命令才能生效
drop user li4删除用户不要通过 delete from user uwhere user=‘li4’ 进行删除, 系统会有残留信息保留。

2.示例

select host,user,password,select_priv,insert_priv,drop_priv form mysql.user;

host : 表示连接类型
% 表示所有远程通过 TCP 方式的连接
IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定 ip 地址进行的 TCP 方式的连接
机器名 通过制定 i 网络中的机器名进行的 TCP 方式的连接
::1 IPv6 的本地 ip 地址 等同于 IPv4 的 127.0.0.1
localhost 本地方式通过命令行方式的连接 , 比如 mysql -u xxx -p 123xxx 方式的连接。

user: 表示用户名
同一用户通过不同方式链接的权限是不一样的。

password: 密码
所有密码串通过 password(明文字符串) 生成的密文字符串。 加密算法为 MYSQLSHA1 , 不可逆 。
mysql 5.7 的密码保存到 authentication_string 字段中不再使用 password 字段。

select_priv , insert_priv
为该用户所拥有的权限。

4.2 用户权限管理

1.授予权限

命令描述
grant 权限 1,权限 2,…权限 n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’该权限如果发现没有该用户, 则会直接新建一个用户。
grant all privileges on . to joe@’%’ identified by ‘123’;授予通过网络方式登录的的 joe 用户 , 对所有库所有表的全部权限, 密码设为 123.

2.收回权限

命令描述
show grants查看当前用户权限
revoke [权限 1,权限 2,…权限 n] on库名.表名 from 用户名@用户地址 ;收回权限命令
REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;收回全库全表的所有权限
REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost;收回 mysql 库下的所有表的插删改查权限

3查看权限

命令描述
show grants;查看当前用户权限
select * from user ;查看全部用户权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值