CentOS 7-mysql的基本设置

文章目录

            • 一、mysql的基本设置
            • 1. 字符集设置
            • 2. 设置mysql自动启动
            • 3. 密码设置
            • 4. 查看目前mysql的用户,是否存在匿名用户。
            • 5. 插入mysql新用户。
            • 6. 解决root账号远程链接
            • 7. 打开genelog,记录所有sql操作语句。
            • 8. 让简单的密码可以设置成功
            • 9. 赋给对应用户的权限

一、mysql的基本设置

如果需要安装姿势请查看CentOS 7-mysql的安装姿势这篇博客。

1. 字符集设置

默认安装配置在:/etc/my.cnf
CentOS 7-mysql的基本设置_第1张图片
注意分版本:

  • 在5.1版本时,为了解决中文乱码问题,my.ini内[mysql] 和[mysqld]中都写:
    default-character-set=utf8
  • 在5.5版本以上,[mysql]内可以这么写,[mysqld]内不能这么写了,而是写成:
    character-set-server=utf8
2. 设置mysql自动启动

非阿里云主机centos 7

  • 执行chkconfig mysqld on
  • 执行chkconfig --list mysqld查看【如果2-5位启用on状态,表示设置成功】

阿里云主机centos 7

  • 设置开机启动systemctl enable mysqld
  • 加载配置systemctl daemon-reload
3. 密码设置
  • 临时密码
    第一次启动数据库,会有临时密码,初始密码在/var/log/mysqld.log文件中,查看命令如下:
grep "password" /var/log/mysqld.log
或者
cat /var/log/mysqld.log | grep "A temporary password"

在这里插入图片描述

  • 修改密码
    • 登陆数据库mysql -u root -p 输入临时密码
      CentOS 7-mysql的基本设置_第2张图片
    • 设置新密码
      问题一:You must reset your password using ALTER USER statement before executing this statement.
      MySQL版本5.7.6版本(以前)用户可以使用如下命令:
       update user set password = password('new-password') where user = 'root';
      
      MySQL版本5.7.6版本(开始后)的用户可以使用如下命令:
       alter user user() identified by 'new-password';
      
      问题二:Your password does not satisfy the current policy requirements
      原因:密码难度不满足要求。
      方案:降低密码难度
       # 降低密码难度
       set global validate_password_policy=LOW;
       # 设置密码长度 
       set global validate_password_length=6;
      
  • 暴力重置密码
    • 修改mysql的配置文件
      vim /ect/my.cnf
      
    • [mysqld]下添加skip-grant-tables参数
      问题一:在5.7版本中,添加参数无法启动。查看/var/log/mysql.log日志提示:unknown option '--ship-grant-tables'
      替代方案:执行mysqld -skip-grant-tables
    • 使用mysql -u root登陆
      CentOS 7-mysql的基本设置_第3张图片
    • 刷新授权表【测试5.7版本中必须要该操作】,直接执行修改密码操作会报:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
      flush privileges;
      
    • 根据mysql的版本进行修改密码
      5.7版本:
      在这里插入图片描述
      alter user 'root'@'localhost' identified by 'new-password';
      
    • 重新启动mysqld服务,很重要,否则,都是跳过密码验证的方式运行服务。
      service mysqld restart
      
4. 查看目前mysql的用户,是否存在匿名用户。
# 查看是否有匿名用户
select user,host from mysql.user;
# 删除匿名用户
delete from mysql.user where user = '';
# 刷新配置
flush privileges;
5. 插入mysql新用户。
# 插入新用户
# 5.7版本以前
insert into mysql.user(Host, User, Password) values ("localhost", "yourusername", password("yourpassword"));
# 5.7版本后 
# username - 你将创建的用户名,
# host - 指定该用户在哪个主机上可以登陆,如果"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
# password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
create user 'username'@'host' identified by 'password';
# 刷新生效
flush privileges;
6. 解决root账号远程链接
  • 查看Host、User
select Host,User from user \G;
  • 更新root的远程主机,允许任何主机可以访问
update user set host = "%" where Host = "localhost" and User = "root";
  • 刷新权限
flush privileges;
  • 如果还链接不上,查看防火墙是否开启,如果开启,关闭防火墙
查看是否开启
ps -ef | grep firewalld
关闭防火墙
sudo service firewall.service stop
7. 打开genelog,记录所有sql操作语句。
# 设置日志输出路径
set global general_log_file = "/tmp/general.log";
# 开启日志
set global general_log = on;
8. 让简单的密码可以设置成功
set global validate_password_policy = 0;
set global validate_password_length = 1;
9. 赋给对应用户的权限
# 将所有权限赋给xx用户
grant all privileges on *.* to 'xx'@'%‘ identified by '123456' with grant option;
# 根据自己实际情况决定是否开什么权限
# 数据库.*:表示该数据库的所有表
# host:对应的来访问的ip
grant select,insert,update on 数据库.* to 用户@'host' identified by '密码'
# 回收xx用户的所有权限
revoke all privileges on *.* from xx;
# 需要刷新权限操作
flush privileges;

你可能感兴趣的:(centos)