18
2021
01
16:56:09

CentOS安装mariadb

前言

(一)安装mariadb

  1. 通过yum 命令安装

    1
    yum install mariadb-server
  2. 安装完成MariaDB,首先启动MariaDB

    1
    systemctl start mariadb
    • centos 7 以下使用 service

    • linux deploy 中不能使用这两种,报错:Running in chroot, ignoring request.

    • 分析: 查看mariadb.service 服务

      cat -n /usr/lib/systemd/system/mariadb.service

      1
      2
      3
      4
      5
      35    ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n
      36    # Note: we set --basedir to prevent probes that might trigger SELinux alarms,
      37    # per bug #547485
      38    ExecStart=/usr/bin/mysqld_safe --basedir=/usr
      39    ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID

      可以看出启动mariadb要启动mariadb-prepare-db-di

      1
      /usr/libexec/mariadb-prepare-db-di
    • 解决

      如果执行出现文件夹mariadb-prepare-db-di 出现失败

      1
      2
      3
      4
      5
      [root@localhost ~]
      Running in chroot, ignoring request.
      Running in chroot, ignoring request.
      Database MariaDB is not initialized, but the directory /var/lib/mysql is not empty, so initialization cannot be done.
      Make sure the /var/lib/mysql is empty before running mariadb-prepare-db-dir.

      需要将/var/lib/mysql里面的文件删除然后再执行

      1
      /usr/libexec/mariadb-prepare-db-di

      查找mysqld_safe路径

      1
      2
      whereis mysqld_safe
      mysqld_safe: /usr/bin/mysqld_safe /usr/share/man/man1/mysqld_safe.1.gz

      使用mysqld_ safe启动mysql

      1
      /usr/bin/mysqld_safe --watch

      mysql在启动时是需要”socket“权限的,只有root用户有这个权限。
      1、更改mysql配置文件里的启动用户,把mysql改为root。但是生产环境不建议这么做
      2、将MySQL用户赋予socket权限

      1
      sudo  usermod -a -G aid_inet,aid_net_raw mysql

      ==注意:每次刷新配置就

      要为MySQL重新赋予socket权限==

  3. 设置开机自启

    1
    systemctl enable mariadb

(二)接下来进行MariaDB的相关简单配置

1
mysql_secure_installation

首先是设置密码,会提示先输入密码

Enter current password for root (enter for none):<–初次运行直接回车

设置密码

Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的root密码

其他配置

Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车

Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车(如果生产环境建议不开放root远程登录,危险性高),

Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车

Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

3、初始化MariaDB完成,接下来测试root登录

1
mysql -uroot -p

输入root密码登录mysql。

(三)配置MariaDB的字符集

一、修改配置文件/etc/my.cnf

1
vi /etc/my.cnf

在[mysqld]标签下socket=/var/lib/mysql/mysql.sock下方添加

1
2
3
4
5
6
#character
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
1571385736672

二、配置文件/etc/my.cnf.d/client.cnf

1
vi /etc/my.cnf.d/client.cnf

在[client]下添加

1
2
#character
default-character-set=utf8
1571385850972

三、配置文件/etc/my.cnf.d/mysql-clients.cnf

1
vi /etc/my.cnf.d/mysql-clients.cnf

在[mysql]中添加

1
2
#character
default-character-set=utf8
1571385974217

四、重启MariaDB服务

(四)添加用户

1、创建用户
语法:CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;

说明:

  • username:你将创建的指定用户名

  • host:指定该用户在哪个主机上可以登陆。如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%。

    • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

      参照列子:

      1
      2
      3
      4
      5
      CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
        CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
        CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
        CREATE USER 'pig'@'%' IDENTIFIED BY '';
        CREATE USER 'pig'@'%';

      2、授权新建用户的可执行权限:

      命令:

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

      五、查看字符集

      1
      mysql -uroot -p

      登录mariadb

      查看字符集

      1
      show variables like "%character%";show variables like "%collation%";

      (四)新增数据库用户

1、创建用户
语法:

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

说明:

username:你将创建的指定用户名
host:指定该用户在哪个主机上可以登陆。如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%。
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
参照列子:

1
2
3
4
5
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

2、授权新建用户的可执行权限:

命令:

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

说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所有的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
例子:

1
2
3
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

注意:
用以上命令授权的用户不能给其它新建用户授权,如果想让该用户可以授权给其他用户,用以下命令:

注意:
用以上命令授权的用户不能给其它新建用户授权,如果想让该用户可以授权给其他用户,用以下命令:

1
grant all privileges on *.* to lvdou@'%' identified by 'lvdou' with grant option;

3.设置与更改用户密码
命令:

1
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:

1
SET PASSWORD = PASSWORD("newpassword");

或者

1
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

  1. 撤销用户权限
    命令:

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

说明:
privilege, databasename, tablename:同授权部分

例子:

1
REVOKE SELECT ON *.* FROM 'pig'@'%';

注意:
假如你在给用户‘pig’@’%’授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘pig’@’%’,则在使用REVOKE SELECT ON . FROM ‘pig’@’%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON . TO ‘pig’@’%’;则REVOKE SELECT ON test.user FROM ‘pig’@’%’;命令也不能撤销该用户对test数据库中user表的Select权限。

注意:
假如你在给用户‘pig’@’%’授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘pig’@’%’,则在使用REVOKE SELECT ON . FROM ‘pig’@’%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON . TO ‘pig’@’%’;则REVOKE SELECT ON test.user FROM ‘pig’@’%’;命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR ‘pig’@’%’; 查看。

5.删除用户
命令:

1
DROP USER 'username'@'host';




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/1606.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: