Linux 下 MySQL(Mariadb) 安装与使用

因为工做须要,常常统计各种信息,因而有了开发部署一套企业信息管理系统的需求。考虑到只是本部门的须要,且有人力资源支持开发,因此由咱们本身开发。硬件使用员工淘汰的旧硬件,软件计划采用 LAMP 组合,其余须要开发的部分,也由咱们本身完成。简单说来,不花一分钱,就要完成这项工做。mysql

操做系统采用 CentOS-7.4,MySQL 选用配套的 mariadb-5.5.56。我本身其实也是个新手,没有干过这项工做,因此过年期间也加班加点,争取年后能在单位的机器上当即部署使用。如今,记下这个过程,以备不时之需。sql

CentOS 7 的安装再也不详述,选择最小安装便可,剩下的软件都可以在操做系统安装后再安装。数据库

MySQL 之因此选择 mariadb 而不是原生 MySQL 是由于在咱们的业务范围内,mariadb 彻底能知足需求,且是CentOS 7 自带的,应该解决了很多兼容性问题。从百度百科咱们知道,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL受权许可。MariaDB的目的是彻底兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。基于以上缘由,咱们选择了 mariadb。安全

  1. 安装 mariadb服务器

    # yum install -y mariadb mariadb-server
      # systemctl list-unit-files | grep mariadb
      mariadb.service                             disabled
      # systemctl enable mariadb.service
      # systemctl start  mariadb.service

    必须拥有 root 权限才能安装,且安装后要启用且启动 mariadb.service。网络

  2. 更该密码测试

    $ mysql
      MariaDB [(none)]> set password = password('coder');         
      ERROR 1133 (42000): Can't find any matching row in the user table  
      MariaDB [(none)]> flush privileges;  
      ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD  
      privilege(s) for this operation
      #  mysql
      MariaDB [(none)]> flush privileges;     
      Query OK, 0 rows affected (0.00 sec)    
      MariaDB [(none)]> set password = password('coder');   
      Query OK, 0 rows affected (0.00 sec)
      $ mysql
      MariaDB [(none)]> set password = password('coder');         
      ERROR 1133 (42000): Can't find any matching row in the user table  
      $ mysql -u root -p
      Enter password:
      MariaDB [(none)]>

    安装完 mariadb 后,退出 root 权限,此时启动 mysql,能正常启动,可是没法设置密码。查 mysql 错 误代码说明里,查到 mysql 错误 1133 是数据库用户名不存在 ;查网上解决办法,好多提示执行 FLUSH PRIVILEGES; 命令,但仍然没法成功执行。但从 root 用户就能够正确执行 FLUSH PRIVILEGES; 和 set
    password 命令,后来查系统数据库的表,用户权限表中,只有 root 用户,没有 Linux 系统中的普通用 户,因此普通用户链接数据库后,也没法执行有影响的命令。this

    若是平常应用中,须要从 Linux 系统的普通用户链接数据库,则须要使用 mysql -u root -p 命令并输入设 置的数据库 root 用户密码,不是 Linux 系统 root 用户密码,并且,必须使用 -p 选项,不然会提示:编码

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)操作系统

    此时,仍然没法进入数据库。

  3. 数据库安全设置
    MariaDB 推荐全部生产环境的 MariaDB 服务器都运行此脚本。

    # mysql_secure_installation

    (1). 设置密码,因为前面已经设置过,此处不须要更改;
    (2). 删除数据库的匿名帐户,正是由于有此匿名帐户,咱们能够以空身份登录(仅输入 mysql ),但无 法完成其余大部分操做。此处应该删除该匿名帐户;
    (3). 禁止 root 用户从网络登录, root 用户仅被容许从 'localhost' 登录,此处应该选择 Yes ;
    (4). 删除 test 数据库,该数据库仅用于测试,应该在转入生产环境前删除,此处选择删除;
    (5). 从新载入权限表,以使所作的更改生效,此处选择 yes;

  4. 数据库字符集设置
    因为数据库中须要输入输出中文信息,因此须要作支持中文设置。

    MariaDB [(none)]> show variables like 'char%';

    默认状况下,该命令输出的各类字符集多数是 latin1,不支持中文,此时若是建立数据库、表,并写入中 文信息。插入操做能成功执行,可是查询时,涉及中文信息的会以“??? “的方式显示,彻底没法阅读。

    更改办法:

    In file /etc/my.cnf.d/client.cnf, after the '[client]' zone, add the next line as follows:
    [client]
    default-character-set=utf8
    in file /etc/my.cnf.d/server.cnf, after the '[server]' zone, add the next line as follows:
    [server]
    character-set-server=utf8
    Restart the mariadb.service
    systemctl restart mariadb.service

    作完这些准备工做,就能够在 mariadb 数据库中使用中文了。若是采用远程链接,必须保证远程链接工 具使用的编码和数据库一致。

  5. 建立数据库表

    MariaDB [(none)]>  create database worker_info;  
      MariaDB [(none)]>  use worker_info;  
      MariaDB [(none)]>  create table wid_name ( wid  int unsigned not null,  name  varchar(10) not null, 
     primary key (wid) );
  6. 执行 insert 命令插入数据

    MariaDB [(worker_info)]>  insert into wid_name (wid, name ) values ( 2018101001, '今天' );

数据库的安装基本到此结束。

相关文章
相关标签/搜索