【MySQL】1.MySQL安装配置

守給你的承諾、 提交于 2020-03-25 21:25:26
MySQL官网: https://www.mysql.com/

一、MySQL的安装配置

下载需要安装的软件包:  https://dev.mysql.com/downloads/mysql/
MySQL的安装包有已经编译成二进制文件的,RPM包或者源码,下载二进制文件版本的,直接使用就可以了。按需选择版本。
[root@node1 soft]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@node1 soft]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@node1 soft]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql
[root@node1 ~]# yum install libaio -y   #安装MySQL依赖libaio
[root@node1 ~]# groupadd mysql
[root@node1 ~]# useradd -r -g mysql -s /bin/false mysql
[root@node1 ~]# cd /usr/local/mysql/
[root@node1 mysql]# bin/mysqld  --initialize-insecure  --user=mysql  --basedir=/usr/local/mysql/  --datadir=/data/mysql/   #初始化数据库。在mysql5.7.7以下的版本初始化是mysql_install_db,5.7.7以后则去掉了该脚本,使用了-initialize 或者 --initialize-insecure 参数作为初始化。-initialize初始化是会为root@localhost生成一个随机密码,--initialize-insecure初始化则密码为空。
[root@node1 mysql]#  bin/mysql_ssl_rsa_setup
[root@node1 mysql]# bin/mysqld_safe --user=mysql &  #启动时默认回去读取/etc/my.cnf或basedir目录下的my.cnf配置文件,应该按需修改配置文件再启动
[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld #按照配置文件里写的修改basedir,datadir,pid_path之后,就可以使用/etc/init.d/mysqld 启停了。也可以使用systemd控制。
client登录:
[root@node1 mysql]# /usr/local/mysql/bin/mysql -S /data/mysql/mysql.sock -uroot #MySQL初始化时没有设置密码
mysql> set password for root@localhost = password('123456');
[root@node1 mysql]# /usr/local/mysql/bin/mysql -S /data/mysql/mysql.sock -uroot -p
使用systemd管理进程:
[root@node1 ~]# vim /usr/lib/systemd/system/mysqld.service          
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
 
[Install]
WantedBy=multi-user.target
 
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
LimitNOFILE = 5000
[root@node1 mysql]# systemctl daemon-reload
[root@node1 mysql]# systemctl restart mysqld

二、用户管理

建库,建用户,设密码,授权
create database app01;
grant all on app01.* to tom identified by '123456';
grant all on app01.* to tom@'%' identified by '123456';
grant all on app01.* to tom@192.168.30.12 identified by '123456'; 把app01这个数据库上面的所有权限授权给tom这个用户并设置密码
grant all on app01.* to tom@192.168.30.12 with grant option; 允许把自己的权限授予给别人
删除用户 回收权限
revoke select on app01.* from tom; # 回收tom对数据库app01上的select权限
revoke all on app01.* from tom; #回收tom对数据库app01上的所有权限
drop user roy@'192.168.30.11';   #删除用户
grant usage on *.* to roy@192.168.30.11 identified by '123456'  # 更改密码(usage:基本权限)
show grants for roy@192.168.30.11  # 查看用户的权限
grant super on *.* to roy@192.168.30.11;    #给roy用户授予改密码权限
普通mysql用户更改自己的密码:
# mysqladmin -h 192.168.20.12 -uroy -p123456 password "1234567"
# mysqladmin -uroot -p123456 ping  #查看本机mysql是否启动
# mysqladmin -h192.168.30.12 -uroot -p123456 status
忘记root登录密码 -- 跳过授权表
# 命令行添加参数启动MySQL:
[root@node1 ~]# systemctl stop mysqld
[root@node1 mysql]# bin/mysqld_safe --skip-grant-tables --skip-networking
# 配置文件my.cnf添加参数:
[mysqld]
skip-grant-tables   #跳过授权表
skip-networking #开启该选项后就不能远程访问MySQL
/etc/init.d/mysqld restart
 
[root@node1 ~]# mysql -S /data/mysql/mysql.sock #无需密码登录
mysql> update mysql.user set authentication_string=password("123456") where user='root' and host='localhost';  #修改root密码
mysql> flush privileges;  #刷新授权
# 重新修改配置文件,然后重启服务器
 
select current_user() [from dual]; 查看当前用户

----

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!