感谢前辈分享的安装过程
mysql安装: https://www.cnblogs.com/brianzhu/p/8575243.html
mysql用户配置: https://blog.csdn.net/luguodehua/article/details/80327462
mysql默认配置文件查找: https://www.cnblogs.com/freeliver54/p/9171748.html
mysql安装:
1. 下载mysql的yum源
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2. 安装mysql的yum源
yum -y install mysql57-community-release-el7-10.noarch.rpm
3. 安装mysql
yum -y install mysql-community-server
mysql配置
1. 启动mysql:
systemctl start mysqld.service
2. 查看mysql启动状态
systemctl status mysqld.service
3. 登录mysql
默认情况下有一个root用户, 但是密码需要从日志中获取出来
grep "password" /var/log/mysqld.log
登录:
mysql -uroot -p # 回车后会提示输入密码
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库
重置密码(注意:默认情况下mysql有密码的规范, 可以修改该规范 以允许使用简单密码, 也可以直接设置复杂一点, 包括大小写, 数字, 特殊字符):
让root用户仅能在本机登录: ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉
yum -y remove mysql57-community-release-el7-10.noarch
允许客户端工具连接:
操作完成上面的,现在还不能用可视化的客户端进行连接,需要我们进行授权:
grant all on *.* to root@'%' identified by '数据库密码';
添加用户
1. 创建用户:
任意位置登陆的用户: CREATE USER 'bbb'@'%' identified BY '123456';//表示新创建的用户,名为bbb,这个用户密码为123456,可以从其他电脑远程登陆mysql所在服务器,
只能本机登陆的用户: CREATE USER ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; //表示创建的新用户,名为aaa,这个新用户密码为123456,只允许本机登陆
2. 授权用户:
语法: grant privileges on databasename.tablename to 'username'@'host';
grant select, insert on zje.zje to 'aaa'@'%'; //表示给用户aaa授权,让aaa能给zje库中的zje表 实行 insert 和 select。
grant all on *.* to 'aaa'@'%'; //表示给用户aaa授权,让aaa能给所有库所有表实行所有的权力。
注意:
用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上 WITH GRANT OPTION
如: grant all on *.* to 'aaa'@'%' with grant option;
创建的一般用户最好回收掉drop权限, 血的教训....
3.设置与更改用户密码
SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);
如果是设置当前用户的密码:
SET PASSWORD = PASSWORD('newpassword');
如: SET PASSWORD = PASSWORD(‘123456’);
4.撤销用户权限:
命令:REVOKE privileges ON database.tablename FROM ‘username’@‘host’;
例如: REVOKE SELECT ON *.* FROM ‘zje’@‘%’;
撤销carl用户的drop权限: revoke drop on *.* from 'carl'@'%';
但注意:
若授予权利是这样写: GRANT SELECT ON *.* TO ‘zje’@‘%’;
则用 REVOKE SELECT ON zje.aaa TO ‘zje’@‘%’;是不能撤销用户zje 对 zje.aaa 中的SELECT 权利的。
反过来 GRANT SELECT ON zje.aaa TO ‘zje’@‘%’;授予权力
用 REVOKE SELECT ON *.* FROM ‘zje’@‘%’;也是不能用来撤销用户zje 对zje库的aaa表的SELECT 权利的
配置修改
1. mysql5.7默认情况下group by函数是受限制的, 如下sql是会报错的
select * from information_schema.TABLES t group by t.TABLE_TYPE;
报错信息:
of SELECT list is not in GROUP BY clause and contains nonaggregated column 'wes_trader.b.integral_value' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
执行sql, select @@GLOBAL.sql_mode; 得到如下查询结果
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
此时需要修改mysql的配置文件, /etc/my.cnf 文件, 在文件的最末尾添加上如下配置, 即去掉ONLY_FULL_GROUP_BY参数
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION