Linux下,非root用户安装及配置mysql

  • 参考链接
  • 下载安装包
  • 解压及编写配置文件
  • 解压文件
  • 编写配置文件
  • 安装MySql
  • 启动与关闭MySql服务
  • 启动
  • 关闭
  • 查看MySql进程状态
  • 登录MySql
  • 获取root用户密码
  • MySql正常登录命令报错
  • 使用mysql.sock登录(有root权限)
  • 登录mysql(有root权限)。我里我以root身份登录.
  • 登录后要退出的话
  • 修改初始密码
  • 创建一个数据库
  • 授予用户该数据库权限
  • 查看用户列表
  • 删除用户
  • 密码修改
  • 修改用户被连接范围


参考链接

https://cloud.tencent.com/developer/article/1583129https://www.modb.pro/db/27948#6mysqladmin_65https://blog.csdn.net/LJFPHP/article/details/78182778

下载安装包

官方下载地址:https://downloads.mysql.com/archives/community/ 选用版本为:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz 下载完成后使用xftp上传到服务器内

解压及编写配置文件

解压文件

# 解压
tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
# mysql-5.7.29-linux-glibc2.12-x86_64文件夹 重命名为 mysql文件夹
mv mysql-5.7.29-linux-glibc2.12-x86_64 mysql

编写配置文件

# 进入mysql文件夹下
cd mysql
# 创建并编辑文件 my.cnf
vim my.cnf

将如下代码直接复制到 my.cnf 内。
说明:oper为 用户名称 ,mysql 是上一步我们mv重命名的文件名, mysql端口使用3336

[client]   
port=3336  
socket=/home/oper/mysql/mysql.sock  

[mysqld]
port=3336
basedir=/home/oper/mysql
datadir=/home/oper/mysql/data
pid-file=/home/oper/mysql/mysql.pid
socket=/home/oper/mysql/mysql.sock
log_error=/home/oper/mysql/error.log
server-id=100
# 设置大小写不敏感
lower_case_table_names=1

安装MySql

bin/mysqld \
--defaults-file=/home/oper/mysql/my.cnf \
--initialize \
--user=oper \
--basedir=/home/oper/mysql \
--datadir=/home/oper/mysql/data

以上命令,直接复制粘贴,然后回车。
如果成功无任何返回结果,如出现任何返回结果即为失败。

启动与关闭MySql服务

mysql生产环境启动服务使用 mysqld_safe,关闭服务使用 mysqladmin 就可以了。

# 进入mysql根目录下
cd /home/oper/mysql/

启动

# mysqld_safe启动mysql服务
bin/mysqld_safe --defaults-file=/home/oper/mysql/my.cnf --user=oper &

这里是可以启动成功的,继续下一步。

关闭

# mysqladmin关闭mysql服务
bin/mysqladmin -u root -p -S /home/oper/mysql/mysql.sock shutdown

查看MySql进程状态

ps -ef | grep mysql

MySql的进程状态,如下:

oper       8133   7553  0 23:24 pts/0    00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/opermysql/my.cnf --user=oper
oper       8298   8133  0 23:24 pts/0    00:00:00 /home/oper/mysql/bin/mysqld --defaults-file=/home/oper/mysql/my.cnf --basedir=/home/oper/mysql --datadir=/home/oper/mysql/data --plugin-dir=/home/oper/mysql/lib/plugin --log-error=/home/oper/mysql/error.log --pid-file=/home/oper/mysql/mysql.pid --socket=/home/oper/mysql/mysql.sock --port=3336
oper       9138   8343  0 23:39 pts/1    00:00:00 grep --color=auto mysql

登录MySql

获取root用户密码

初始密码在error.log文件中,输入如下命令:

cat error.log | grep root@localhost

返回结果
2021-04-20T15:19:31.017446Z 1 [Note] A temporary password is generated for root@localhost: qyfi/r-6JC6U 初始密码随机产生,这边得到的初始密码为:qyfi/r-6JC6U ,具体请参照各自密码。

MySql正常登录命令报错

这里因为是非oper用户,所以正常登录命令应该是:bin/mysql -u root -p

但是即使你这样输入了,一样报错。会给你报如下错误代码:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

使用mysql.sock登录(有root权限)

直接加sock的启动命令:(有点笨重,但是能实现)(更好的办法我也没找到)

登录mysql(有root权限)。我里我以root身份登录.

# 进入mysql根目录
cd /home/oper/mysql/
# 登录
bin/mysql -u root -p -S /home/oper/mysql/mysql.sock

系统提示输入密码
Enter password: 输入密码

登录后要退出的话

exit;

修改初始密码

# 登录成功之后,进行初始密码的修改
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
# 使用户root能被任何host访问
update mysql.user set host = '%' where user = 'root';
# 刷新系统权限
flush privileges;

创建一个数据库

# 首先为用户创建一个数据库(conference_room)
create database conference_room;

授予用户该数据库权限

# 授权用户root(密码root)拥有conference_room数据库的所有权限(host='%'表示该用户能被任何host访问)
grant all privileges on conference_room.* to 'root'@'%' identified by 'root';
# 刷新系统权限后,修改才能生效
flush privileges;

或者

# 创建并授权用户cyq(密码123)拥有conference_room数据库的所有权限(host='%'表示该用户能被任何host访问)
grant all privileges on conference_room.* to 'cyq'@'%' identified by '123';
# 刷新系统权限后,修改才能生效
flush privileges;

或者

# 指定conference_room数据库部分权限给用户cyq(密码123),可以这样来写:
grant select,update on conference_room.* to 'cyq'@'%' identified by '123';
# 刷新系统权限
flush privileges;

查看用户列表

# 查看用户列表
select host,user from mysql.user;

删除用户

# 删除用户'admin'
delete from mysql.user where user in('admin');
# 刷新系统权限后,修改才能生效
flush privileges;

密码修改

# 密码修改为'cyq'
SET PASSWORD FOR 'cyq'@'%' = PASSWORD('cyq');
# 刷新系统权限后,修改才能生效
flush privileges;

修改用户被连接范围

# host='localhost',表示该用户只能被本机访问
update mysql.user set host = 'localhost' where user = 'cyq';
# 刷新系统权限后,修改才能生效
flush privileges;