我在Linux中编译安装了一个MYSQL,使用root可以连接,但是不能建立其他用户。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在Linux中编译安装了一个MYSQL,使用root可以连接,但是不能建立其他用户。相关的知识,希望对你有一定的参考价值。

我可以使用root的账户连接我的mysql(/usr/loacl/mysql/bin/mysql -u root -p)然后使用create database test; --建立数据库,后使用grant select,insert,update,delete on *.* to test@"%" Identified by "1q2w3e4r"; --建立test用户,提示成功后,我\q退出MYSQL后使用test用户连接提示如下,请帮忙看一下,谢谢
[root@station11 bin]# mysql test -u test -p
Enter password:
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
[root@station11 bin]# mysql test -h localhost -u test -p
Enter password:
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)

还是不行~^^^

我记得test@'%'是不包含localhost的,你可以试试mysql test -h 本机IP -u test -p
其中本机IP不能是127.0.0.1

本机IP也不能是localhost,mysql应该在什么位置限定了本机非root登录,我没找到过
假设你的IP是1.2.3.4,应当输入mysql test -h 1.2.3.4 -u test -p
如果没有公网IP,192.168.y.x,10.x.y.z这样的内网IP也可以

localhost和127.0.0.1都是"不"行的
参考技术A 执行这个看看GRANT ALL PRIVILEGES on *.* to test@"%" Identified by "1q2w3e4r" 参考技术B 应该是没有授权吧成功吧!
grant all on test.* to test@localhost identified by "1q2w3e4r";
参考技术C 理论上应该可以,但需要修改很多设置,因为本身系统的设计和软件的设计都是用 root 来把它安装到特定的位置来运行。

其实安装软件按安全设计原则,应该只能由 root 来安装,其他用户只能用装好的程序,自己不能安装新的软件。

其实现在 Linux 下面的安全,并不是必须非 root 安装才安全的,需要的是非 root 运行程序,也就是你安装好后,运行 mysql 这个服务器程序的用户是一个特殊设置的没有太多权限的用户就可以很好的保证系统的安全。

如果你非 root 安装,那么这个软件很有可能特殊限制权限的用户会不能运行这个程序,变相的,可能需要有一定权限的用户来执行,这个用户的安全有可能影响到整个 mysql 数据的安全。

Linux 上使用二进制(预编译)文件安装 MySQL

安装配置

# 安装MySQL依赖的libaio库
shell> yum search libaio  # search for info
shell> yum install libaio # install library

# 安装MySQL依赖的libaio库
shell> yum search libnuma  # search for info
shell> yum install libnuma  # install library

编写安装脚本

vim mysql.sh

#!/bin/bash
# 创建用户组
groupadd mysql
# 创建用户,禁止登陆
useradd -r -g mysql -s /bin/false mysql

cd /usr/local
# 解压缩
tar -zxvf mysql-VERSION-OS.tar.gz
# 重命名
mv mysql-VERSION-OS mysql

cd mysql
# 创建数据目录
mkdir mysql-files
# 设置用户和组
chown mysql:mysql mysql-files
# 设置权限
chmod 750 mysql-files

yum remove mariadb-libs -y

# 使用服务器初始化数据目录,生成随机初始的`root`密码,并标记为已过期,初始密码写入标准错误输出
bin/mysqld --initialize --user=mysql
# 服务器支持安全连接
bin/mysql_ssl_rsa_setup
# 启动MySQL
bin/mysqld_safe --user=mysql &

cp support-files/mysql.server /etc/init.d/mysql.server

# 将mysql/bin加入环境变量
echo \'export PATH=$PATH:/usr/local/mysql/bin\' >> /etc/profile
source /etc/profile

运行安装脚本

source mysql.sh
......
[Warning] A temporary password is generated for root@localhost:
iTag*AfrH5ej

配置及测试

shell> mysql_secure_installation
shell> mysql -u root -p
shell> mysql -h 127.0.0.1 -P 3306 -u root -p

参考:https://dev.mysql.com/doc/ref...

MySQL 目录结构

/usr/local/mysql

目录内容
binmysqld 服务端、客户端和二进制文件
docsMySQL 手册
manUnix 手册
include头文件
lib类库
share错误消息,字典和用于数据库安装的SQL
support-files杂项支持文件
/etc/my.cnf配置文件
/etc/mysql/my.cnf配置文件

其他安装方式

在Microsoft Windows上安装MySQL

使用MySQL Yum存储库在Linux上安装MySQL

使用Oracle的RPM软件包在Linux上安装MySQL

使用Docker在Linux上部署MySQL

从本地软件存储库在Linux上安装MySQL

从源代码安装MySQL

以上是关于我在Linux中编译安装了一个MYSQL,使用root可以连接,但是不能建立其他用户。的主要内容,如果未能解决你的问题,请参考以下文章

Linux安装MySQL

Linux编译安装HAProxy最新版本2.4.1

Redhat Linux上mysql安装-binary package安装

Linux平台上安装MySQL服务

linux中mysql的卸载与安装

Linux 上使用二进制(预编译)文件安装 MySQL