关于Mariadb启动报错Job for mariadb.service failed because the control process exited

MariaDB重启后,执行 systemctl start mariadb 启动报错

Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

根据官方提示执行 systemctl status mariadb.service 或者 journalctl -xe 并不能看出真正原因,此时可以查看mariadb的日志文件,查看错误原因。

cd /var/log/mariadb/

tail -n 100 mariadb.log

发现 Fatal error: cannot allocate memory for the buffer pool。

内存不够了

vim /etc/my.cnf将 innodb_buffer_pool_size = 专用的DB服务器,改为内存的50%,非专用改为内存的15-20%。

重启即可

MariaDb忘记root密码

在MariaDB配置文件/etc/my.cnf ,加入 skip-grant-tables

重启数据库,`service mariadb restart` 。

执行命令 `mysql`,可以直接进入数据库cmd

切换到mysql数据库中,`use mysql;`

执行修改密码语句 `UPDATE user SET Password = password ( ‘123456’) WHERE User = ‘root’ ;`

完毕后,修改配置文件,将新加入的一行去掉,重启数据库

使用新的密码进入!

Mariadb创建用户和授权

创建用户

命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:
username – 创建的用户名
host- 指定该用户在哪个主机上可以登陆,如果是本地可用为localhost, 可以从任意远程主机登陆,可以使用%
password
– 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

比如:

CREATE USER 'tester'@'localhost' IDENTIFIED BY '123456';
-- 创建仅能用于本地登录的账号tester,密码为123456
CREATE USER 'tester'@'%' IDENTIFIED BY '123456';
-- 创建可以在任何地方登陆䣌账号tester

授权

如果需要给用户权限,需要用到以下语法:`
GRANT privileges ON databasename.tablename TO ‘username’@’host’ `

privileges 表示权限,包括SELECT,UPDATE,DELETE,INSERT, 如果要授予所的权限则使用ALL

databasename – 数据库名

tablename – 表名

指定数据库所有表可以用database.*表示

GRANT ALL ON database.* TO ‘tester’@’%’;