[root@dba-01 ~]# yum install -y gcc gcc-c++ automake autoconf [root@dba-01 ~]# yum install make cmake bison-devel ncurses-devel libaio-devel [root@dba-01 ~]# wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz # 登录boost.org下载也可以 [root@dba-01 ~]# tar xf boost_1_59_0.tar.gz -C /usr/local/ [root@dba-01 ~]# 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
创建用户:mysql> create user bgx;
删除用户:delete user drop user
mysql> drop user bgx; 逻辑操作
mysql> delete user 物业删除,从表中找到删除
修改用户:update
mysql> update mysql.user set host='127.0.0.1' where user='bgx';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
注意:update更改密码的时候,必须要flush privileges
一下,不然更改的密码不会立即生效
刚装完MySQL数据库应该做的事情:
[root@dba-01 ~]# mysqladmin -uroot -p password '123'
[root@dba-01 ~]# mysql -uroot -p123
# 第一步:关闭数据库 [root@dba-01 ~]# /etc/init.d/mysqld stop # 第二步:启动数据库 [root@dba-01 ~]# mysqld_safe --skip-grant-tables --skip-networking # 第三步:使用MySQL库 mysql> user mysql; # 第四步:创建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');
# 1. 先关闭数据库 [root@dba-01 ~]# /etc/init.d/mysqld stop # 2. 启动数据库 [root@dba-01 ~]# mysqld_safe --skip-grant-tables --skip-networking # 3. 修改root密码 mysql> update user set password=PASSWORD('oldboy123') where user='root' and host='localhost';
mysql> create user oldboy@'10.0.0.%' identified by '123';
mysql> select user,host from mysql.user;
mysql> drop user oldboy@‘10.0.0.%’;
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’;
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实例中所有库下的所有表
wordress.*
当前MySQL实例中wordpress库中所有表(单库级别)
wordpress.user
当前MySQL实例中wordpress库中的user表(单表级别)
#一般给开发创建用户权限 grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
MySQL
常见的特定于客户机的连接选项:
连接方式
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)我不知道我的程序在哪?
2)我也不知道我将来启动后去哪找数据库?
3)将来我启动的时候启动信息和错误信息放在哪?
4)我启动的时候sock文件pid文件放在哪?
5)我启动,你们给了我多少内存?
...
N)我还有很多问题需要在我启动之前告诉我,emmmmm....
--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
--defaults-file:默认配置文件
如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。
思考:
#cmake: socket=/application/mysql/tmp/mysql.sock #命令行: --socket=/tmp/mysql.sock #配置文件: /etc/my.cnf中[mysqld]标签下:socket=/opt/mysql.sock #default参数: --defaults-file=/tmp/a.txt配置文件中[mysqld]标签下:socket=/tmp/test.sock
优先级结论:
初始化配置文件功能:
如何配置初始化配置文件
什么是多实例?
(进程+多个线程+已分配内存结构)*多个
实战
#创建数据目录 [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'"