Linux下,非root用户安装及配置mysql
参考链接
https://cloud.tencent.com/developer/article/1583129
https://www.modb.pro/db/27948#6mysqladmin_65
https://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;