mysql
2018-11-03 本文已影响0人
436048bfc6a1
忙碌了一周终于有时间总结一下
1.部署mysql:
(1) 二进制部署(推荐): 虽然安装较为麻烦,但是mysql的目录是定制化的
(2) rpm包(不推荐):
~ yum install mysql-server yum install mysql-client
~ 部署简单但是目录固化
(3) 如何安装
a) 打开/usr/local文件夹: cd /usr/local
b) 解压jdk并且新建/usr/java, 将jdk解压后的文件移动到/usr/java
c) 配置全局环境变量并生效:
~ vi /etc/profile
~ export JAVA_HOME=/usr/java/jdk1.8.0_191
~ export PATH=$PATH:$JAVA_HOME/bin
~ source /etc/profile
(4) 安装步骤
a) 首先检查是否已经安装
ps -ef | grep mysqld
b) 再查看是否有rpm包
rpm -qa | grep -i mysql
c) 解压mysql的tar包
d) 创建用户组与用户
~ groupadd -g 101 dba : 新增组dba,并赋予组id为101
~ useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
新增用户mysqladmin, 其home directory为/usr/local/mysql
id为514,主组为dba, 副组为root
~ 如果用户已存在, 修改其的一些信息:
usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
~ copy环境变量配置文件到mysqladmin的home directory
cp /etc/skel/.* /usr/local/mysql
~ 创建mysql的配置文件: /etc/my.cnf
~ 修改my.cnf的一些内容
innodb_buffer_pool_size(按照自己情况选择)
e) 修改配置文件my.cnf的用户与用户组
chown mysqladmin:dba /etc/my.cnf
f) 修改my.cnf的权限
chmod 640 /etc/my.cnf
g) 修改配置文件mysql文件夹的用户与用户组
chown mysqladmin:dba /usr/local/mysql
h) 修改mysql的权限(因为做的事软连接, 所有如果只是输入第一条命令,文件夹下文件有可能不会是755的)
chmod -R 755 /usr/local/mysql
chmod -R 755 /usr/local/mysql/*
chmod -R 755 文件path
i) 创建binlog文件(mkdir arch) 先切换为mysqladmin用户(在/usr/local/mysql文件夹下)
L) 配置mysql的信息
scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
有一定几率出现Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory #缺少libaio.so 包
(5) 配置mysql服务并配置开机自启动
a) 首先切换到/usr/local/mysql,将服务文件拷贝到init.d下,并重命名为mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysql
b) 对mysql文件赋予执行权限
chmod +x /etc/rc.d/init.d/mysql
c) 删除mysql服务
chkconfig --del mysql
d) 添加mysql服务
chkconfig --add mysql
e) 设置开机自启动
chkconfig mysql on
~ 如果chkconfig mysql on没有起作用,vi /etc/rc.local文件,
添加su - mysqladmin -c "/etc/init.d/mysql start --federated"
(6) 启动mysql进程并监听
a) 首先切换到mysqladmin用户
su - mysqladmin
b) 由于mysql在安装的时候自动在home directory 创建一个my.cnf文件,尽量删除
rm -rf my.cnf
c) 配置个人环境变量
在Home directory中.bash_profile文件中添加
~ export MYSQL_HOME=/usr/local/mysql
~ export PATH=$MYSQL_HOME/bin:$PATH
d) 启动mysql
~ mysqld_safe & , 执行之后按回车键,程序直接后台运行
(7) 查找mysql的端口号
a) ps -ef | grep mysql
b) netstat -nlp | grep pid
(8) 配置局部变量
vi .bash_profile
`export MYSQL_HOME=/usr/local/mysql`
`export PATH=$MYSQL_HOME/bin:$PATH`
- 登录mysql
(1) 直接输入mysql
- Mysql常用命令
(1) show databases;
会出现如下的结果
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
(2) use mysql: 使用mysql数据库
(3) show tables: 显示mysql数据库一共有多少张表
如下(一共28张表)
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
(4) 从user表查询用户信息
`select from user, password, host from user;`
+------+----------+--------------+
| user | password | host |
用户 密码 允许外面机器(ip)
+------+----------+--------------+
| root | | localhost |
| root | | bogon |
| root | | 127.0.0.1 |
| root | | ::1 |
| | | localhost |
| | | bogon |
+------+----------+--------------+
(5) 修改用户密码
`update user set password=password('123456') where user='root';`
之后再查询user表显示如下
+------+-------------------------------------------+-----------+
| user | password | host |
+------+-------------------------------------------+-----------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | bogon |
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 127.0.0.1 |
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | ::1 |
| | | localhost |
| | | bogon |
+------+-------------------------------------------+-----------+
(5) 删除空用户
`delete from user where user = '';`
因为空账号和空密码是十分危险的
(6) 刷新权限
`flush privileges;`
对于用户表的操作都加这句话。
(7) 创建数据库
`create database henrydb`
(8) 赋予权限
`grant all privileges on henrydb.* to henry@'127.0.0.1' identified by '123456'`
在127.0.0.1的ip下使用henry用户访问数据库
`grant all privileges on henrydb.* to henry@'%' identified by '123456'`
在所有ip下使用henry用户访问数据库
`grant all privileges on henrydb.* to henry@'133.122.111.0' identified by '123456'`
如果ip总在变,使用该方法配置
创建henry用户, 赋予henrydb的所有权限给henry用户,密码是123456
不要忘记`flush privileges`
(9) 使用henry用户进入mysql
`mysql -u henry -p -h 127.0.0.1`
此时再show databases 显示如下
+--------------------+
| Database |
+--------------------+
| information_schema |
| henrydb |
| test |
+--------------------+
由于mysql和performance_schema 权限较高,无法被henry用户查看。
(10) 正确进入数据库的命令
`mysql -uroot -p -h127.0.0.1 -P3306`
`mysql -uroot -p123456 -h127.0.0.1 -P3306`
(注意-p后面不能接空格,因为会将空格看成为密码的一部分)
4.删除MySQL
(1) rm -rf $MYSQL_HOME/arch/* 删除binlog
(2) rm -rf $MYSQL_HOME/data/* 删除数据
- 补充
(1) 如果命令过长怎办
scripts/mysql_install_db \
--user=mysqladmin \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data