linux mysql配置

一:安装mysql

CentOS中默认安装有MariaDB,在安装MySQL时会覆盖MariaDB。 这里采用Yum管理好了各种rpm包的依赖,能够从指定的服务器自动下载RPM包并且安装,所以在安装完成后必须要卸掉,否则会自动更新。

注释:原来安装的话,先卸载,再安装:如下命令:

一,rpm -qa|grep mysql

二,yum remove MySQL-client-5.6.17-1.el6.i686

所有的操作都是切换到root用户下进行 
1、安装MySQL官方的Yum Repository

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2:、下载rpm包

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

3、安装MySQL服务

[root@localhost ~]# yum -y install mysql-community-server

执行安装服务的时间比较长,耐心等待,中间有一次询问y/n?输入y回车

4、启动mysql服务:

[root@localhost ~]# systemctl start  mysqld.service

5、其他命令:

重启:systemctl restart mysqld.service

停止:systemctl stop mysqld.service

查看状态:systemctl status mysqld.service

最后两行出现:代表启动成功。
Starting MySQL Server...
Started MySQL Server.

二:初始化设置

1、登录用户:

[root@localhost ~]# mysql -u root -p

首次登录需要输入生成的初始密码,登陆后必须要修改这个密码。
初始密码默认是/var/log/mysqld.log,找到下面这行,临时密码是:h.zdWmt/l0M3。

2018-08-22T07:06:29.387527Z 1 [Note] A temporary password is generated for root@localhost: h.zdWmt/l0M3
注意:只有启动过一次mysql才可以查看临时密码。

2、重新设置密码:

重新设置密码之前,需要根据自己需求设置密码的复杂度和长度时,要登录数据库后设置如下参数。

validate_password_policy代表密码策略,默认是1:符合长度,且必须含有数字,小写或大写字母,特殊字符。设置为0判断密码的标准就基于密码的长度了。一定要先修改两个参数再修改密码

mysql> set global validate_password_policy=0;

validate_password_length代表密码长度,最小值为4

mysql> set global validate_password_length=4;

通过命令查看设置参数的情况:

mysql> SHOW VARIABLES LIKE 'validate_password%';

+--------------------------------------+-------+
| Variable_name            | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file  |    |
| validate_password_length       | 6   |
| validate_password_mixed_case_count  | 2   |
| validate_password_number_count    | 1   |
| validate_password_policy       | LOW  |
| validate_password_special_char_count | 1   |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

注意:以上两行设置都是临时设置,重启数据库后需要重新设置,再创建新密码。

设置新密码:

修改密码为root,之后就可以使用该密码登录了

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mima';             //代码用户为root的密码是mima.

3、退出数据库:

exit

注意:

  1. /etc/my.cnf 这是mysql的主配置文件
  2. /var/lib/mysql mysql数据库的数据库文件存放位置
  3. /var/log mysql数据库的日志输出存放位置

三:更改远程访问权限

1、使用grant all privileges on来更改用户对应某些库的远程权限

语法模板:

grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;

具体含义:

库名:要远程访问的数据库名称,所有的数据库使用“*” 
表名:要远程访问的数据库下的表的名称,所有的表使用“*” 
用户名:要赋给远程访问权限的用户名称 
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%” 
密码:要赋给远程访问权限的用户对应使用的密码

实例:

以下语句代表:所有的地址都可以使用root用户,密码为lxh远程访问所有的数据库远程软件登录时一定要设置下面这句

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'lxh' WITH GRANT OPTION;

以下语句代表: IP为172.16.52.225的电脑可以使用lxh用户,密码为lxh远程访问数据库testdb的所有表
GRANT ALL PRIVILEGES ON testdb.* TO 'lxh'@'172.16.52.225'  IDENTIFIED BY 'lxh' WITH GRANT OPTION;

注意:
需要注意mysql的配置文件中的bindaddress 的参数和skip-networking 配置

bindaddress : 设定哪些ip地址被配置,使得mysql服务器只回应哪些ip地址的请求),最好注释掉该参数或设置成为127.0.0.1以外的值

skip-networking : 如果设置了该参数项,将导致所有TCP/IP端口没有被监听,也就是说出了本机,其他客户端都无法用网络连接到本mysql服务器,所以应该注释掉该参数

2、设置参数

设置数据库编码方式:

打开: /etc/my.cnf,滚动到文件底部复制并粘贴

[mysqld] 

character_set_server=utf8
init_connect='SET NAMES utf8'

注意:

采用navicat新建数据库时,需要将编码方式设置为,字符集:utf8 -- UTF-8 Unicode ,排序规则:utf8_general_ci

在运行sql语句时,出现以下问题:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c

原因:

MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”)。

解决办法:

打开: /etc/my.cnf

滚动到文件底部复制并粘贴

[mysqld] 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

到文件的底部

保存并退出输入模式

systemctl  restart mysqld.service

重启MySQL。 

四.添加用户、删除用户与授权

以下对数据库的操作完全可以利用管理软件完成,比如在Navicat上进行操作,对数据库进行用户和权限管理。

1、创建用户:以root用户登录到数据库进行用户创建

  命令:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
   
   
   
   

  例如:


   
   
   
   
  1. CREATE USER 'test_admin'@'localhost' IDENTIFIED BY 'admin@123_S';
  2. CREATE USER 'test_admin2'@'%' IDENTIFIED BY '';

  note:

    username——将要创建的用户名;

    host——指定该用户在哪个主机上可以登录,"localhost"指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;

    password——该用户的登录密码,密码可以为空,若为空则该用户可以不需要密码登录服务器。

2、授权:以root用户登录到数据库进行授权

  命令:

GRANT privileges ON databasename.tablename TO 'username'@'host'
   
   
   
   

   note: 

    privileges——用户的操作权限,如SELECT等。如果授予所有权限则使用ALL。

    databasename——数据库名称。tablename——表名。如果要给该用户授予对所有数据库和表的相应操作权限则可用*表示,例如*.*

  例如:


   
   
   
   
  1. GRANT SELECT ON test_db.* TO 'test_admin2'@'%';
  2. flush privileges;
  3. note:必须执行flush privileges;

3、撤销用户权限

  命令:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';
   
   
   
   

  例如:

REVOKE SELECT ON test_db.* FROM 'test_min'@'%';
   
   
   
   

4、删除账户及权限:

  命令:

drop user 'username'@'host';
   
   
   
   

5、查看用户的授权

  命令:

SHOW GRANTS FOR 'username'@'host'
   
   
   
   

  例如:

复制代码


   
   
   
   
  1. mysql> SHOW GRANTS FOR 'test_admin'@'%' ;
  2. +----------------------------------------------------------------+
  3. | Grants for test_admin@% |
  4. +----------------------------------------------------------------+
  5. | GRANT USAGE ON *.* TO 'test_admin'@'%' |
  6. | GRANT ALL PRIVILEGES ON `test_manage_db`.* TO 'test_admin'@'%' |
  7. +----------------------------------------------------------------+
  8. 2 rows in set (0.00 sec)
  9. mysql>
                  

你可能感兴趣的:(msql)