[root@db02 mysql-5.7.20]# yum install -y gcc gcc-c++ automake autoconf [root@db02 mysql-5.7.20]# yum install make cmake bison-devel ncurses-devel libaio-devel [root@db02 mysql-5.7.20]# wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz #登录boost.org下载也可以 [root@db02 mysql-5.7.20]# tar xf boost_1_59_0.tar.gz -C /usr/local/ [root@db02 mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 -DMYSQL_DATADIR=/application/mysql-5.7.20/data -DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0
Linux用户的作用:
Linux用户管理:
MySQL用户的作用:
MySQL用户管理:
用户的定义:
用户管理实战
刚装完MySQL数据库该做的事情
[root@db02 mysql-5.7.20]# mysqladmin -uroot -p password ‘oldboy123’
[root@db02 mysql-5.7.20]# mysql -uroot -p123
误删除了所有用户
#关闭数据库 [root@db02 mysql-5.7.20]# /etc/init.d/mysqld stop #启动数据库 [root@db02 mysql-5.7.20]# mysqld_safe --skip-grant-tables --skip-networking #使用mysql库 mysql> use mysql #错误方法1、创建root用户 mysql> create user root@’localhost’; #错误方法2、创建root用户 mysql> insert into user(user,host,password) values(‘root‘,‘10.0.0.55‘,PASSWORD(‘123‘)); #正确方法创建root用户 mysql> insert into mysql.user values (‘localhost’,’root’,PASSWORD(‘123’), ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’’, ’’, ’’, ’’,0,0,0,0,’mysql_native_password’,’’,’N’);
忘记root密码
#关闭数据库
[root@db02 mysql-5.7.20]# /etc/init.d/mysqld stop
#启动数据库
[root@db02 mysql-5.7.20]# mysqld_safe --skip-grant-tables --skip-networking
#修改root用户密码
mysql> update user set password=PASSWORD(‘oldboy123‘) where user=‘root‘ and host=‘localhost‘;
1)创建用户
mysql> create user oldboy@‘10.0.0.%‘ identified by ‘123‘;
2)查看用户
mysql> select user,host from mysql.user;
3)删除用户
mysql> drop user oldboy@‘10.0.0.%’;
4)修改密码
mysql> set password
mysql> update user set password=PASSWORD(‘oldboy123‘) where user=‘root‘ and host=‘localhost‘;
mysql> grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
5)用户权限介绍
MySQL的权限定义:
作用对象:库、表
权限
INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
归属
每次设定只能有一个属主,没有属组或其他用户的概念
grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
权限 作用对象 归属 密码
作用对象分解
*.* [当前MySQL实例中所有库下的所有表]
wordpress.* [当前MySQL实例中wordpress库中所有表(单库级别)]
wordpress.user [当前MySQL实例中wordpress库中的user表(单表级别)]
3.企业中权限的设定
开发人员说:请给我开一个用户
沟通:
#一般给开发创建用户权限
grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
1.连接工具
mysql
常见的特定于客户机的连接选项:
-u:指定用户
-p:指定密码
-h:指定主机
-P:指定端口
-S:指定sock
-e:指定SQL
--protocol=name:指定连接方式
sqlyog、navicat
应用程序连接MySQL
注意:需要加载对应语言程序的API
2.连接方式
mysql -uroot -poldboy123 -S/application/mysql/tmp/mysql.sock
mysql -uroot -poldboy123
mysql -uroot -poldboy123 -h10.0.0.51 -P3306
启动
/etc/init.d/mysqld start ------> mysqld_safe ------> mysqld
关闭
/etc/init.d/mysqld stop
mysqladmin -uroot -poldboy123 shutdown
kill -9 pid ?
killall mysqld ?
pkill mysqld ?
1.初始化配置文件的作用
场景:我要启动实例
问题:
1)我不知道我的程序在哪?
2)我也不知道我将来启动后去哪找数据库?
3)将来我启动的时候启动信息和错误信息放在哪?
4)我启动的时候sock文件pid文件放在哪?
5)我启动,你们给了我多少内存?
...
所以:
--skip-grant-tables
--skip-networking
--datadir=/application/mysql/data
--basedir=/application/mysql
--defaults-file=/etc/my,cnf
--pid-file=/application/mysql/data/db01.pid
--socket=/application/mysql/data/mysql.sock
--user=mysql
--port=3306
--log-error=/application/mysql/data/db01.err
配置文件读取顺序:
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
defaults-extra-file (类似include)
~/my.cnf
如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。
优先级结论:
2.初始化配置文件的使用
初始化配置文件功能
1)影响实例的启动(mysqld)
2)影响到客户端
如何配置初始化配置文件
1)配置标签分类
[client]所有客户端程序
mysql
mysqldump
...
[server]所有服务器程序
mysqld
mysqld_safe
...
1)多套后台进程+线程+内存结构
2)多个配置文件
a.多个端口
b.多个socket文件
c.多个日志文件
d.多个server_id
3)多套数据
#创建数据目录
[root@db01 ~]# mkdir -p /data/330{7..9}
#创建配置文件
[root@db01 ~]# touch /data/330{7..9}/my.cnf
#编辑3307配置文件
[root@db01 ~]# vim /data/3307/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
log-bin=/data/3307/mysql-bin
server_id=7
port=3307
[client]
socket=/data/3307/mysql.sock
#编辑3308配置文件
[root@db01 ~]# vim /data/3308/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
log-bin=/data/3308/mysql-bin
server_id=8
port=3308
[client]
socket=/data/3308/mysql.sock
#编辑3309配置文件
[root@db01 ~]# vim /data/3309/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
log-bin=/data/3309/mysql-bin
server_id=9
port=3309
[client]
socket=/data/3309/mysql.sock
#初始化3307数据
[root@db01 ~]#/application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3307/my.cnf --basedir=/application/mysql --datadir=/data/3307/data
#初始化3308数据
[root@db01 ~]#/application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data
#初始化3309数据
[root@db01 ~]#/application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3309/my.cnf --basedir=/application/mysql --datadir=/data/3309/data
#修改目录权限
[root@db01]# chown -R mysql.mysql /data/330*
#启动多实例
[root@db01]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@db01]# mysqld_safe --defaults-file=/data/3308/my.cnf &
[root@db01]# mysqld_safe --defaults-file=/data/3309/my.cnf &
#查看server_id
[root@db01]# mysql -S /data/3307/mysql.sock -e "show variables like ‘server_id‘"
[root@db01]# mysql -S /data/3308/mysql.sock -e "show variables like ‘server_id‘"
[root@db01]# mysql -S /data/3309/mysql.sock -e "show variables like ‘server_id‘"
原文:https://www.cnblogs.com/martin-wang/p/10607455.html