Mysql基本管理知识

数据库的启动 

[root@node80 ~]# /etc/init.d/mysqld start     #mysqld是从安装包拷贝的mysql.server
Starting MySQL. SUCCESS!

mysql启动基本原理

/etc/init.d/mysqld是个shell脚本,启动时调用mysqld_safe脚本,最后调用mysqld主程序启动mysql,
如下,/etc/init.d/mysqld脚本中调用mysqld_safe $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & 
[root@node80 ~]# ps -ef | grep mysql | grep -v grep
root      50043      1  0 00:18 pts/0    00:00:00 /bin/sh /usr/local/mysql5.5.49/bin/mysqld_safe --datadir=/data --pid-file=/data/node80.pid
mysql     50733  50043  0 00:18 pts/0    00:00:07 /usr/local/mysql5.5.49/bin/mysqld --basedir=/usr/local/mysql5.5.49 --datadir=/data --plugin-dir=/usr/local/mysql5.5.49/lib/plugin --user=mysql --log-error=/data/node80.err --open-files-limit=8192 --pid-file=/data/node80.pid --socket=/usr/local/mysql5.5.49/tmp/mysqld.sock --port=3306

关闭数据库的方法

1、mysqladmin -u root -ppassword shutdown  优雅关闭(推荐) (多实例脚本中也使用这个) 
2、/etc/init.d/mysql stop                             (推荐) 
3kill -USER2 ‘cat path/pid’带kill的尽量不用

强制关闭数据库的方法(导致无法启动,数据丢失)

killall mysqld (实在不行了才尝试)
pkill mysqld killall -9 mysqld 直到mysqld: no process 
killed kill -9 pid

多实例的启动与关闭 (可以写脚本)

启动 /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & 
关闭 ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown


为管理员设置密码  

方法一、mysqladmin修改
    mysqladmin -u root password 'password'  #新装时
    mysqladmin -uroot -poldpassword password 'newpassword'  
方法2、登陆数据库修改  
    mysql>update mysql.user set password=password("newpassword") where user="root"  and host="localhost";    #(必须指定条件及password加密)
    mysql>flush privileges; 
方法3、密码找回时不能用此种
    mysql>set password=password("newpassword"); 
    mysql>flush privileges; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 

Mysql登陆方法 mysql    

mysql -uroot          #刚装完无密码 
mysql -u root -p     #刚装完无密码。多实例登陆 -S socket指定文件
标准的dba命令行登陆,如果使用脚本,密码写入脚本,权限应设成700或加密 mysql -u root -ppassword明文方式 明文方式有隐患,在用history可以查到,并且在/root下的history也有记录,所以可以强制linux不记录历史敏感命令#HISCONTROL=ignorespace   (man bash)

mysql提示符(用于区分生产或测试环境。运维要求,比如查看ip地址确认环境,备份再操作)

1、prompt  \\u@gtms \r:\m:\s: 临时的
2、将上述命令放置在my.cnf的[mysql]下

找回丢失的root密码步骤

1、关闭数据库 /etc/init.d/mysql stop 
2、使用--skip-grant-tables启动mysql,忽略授权登陆验证 mysqld_safe --skip-grant-tables --user=mysql & 
mysql  =====>登陆时密码为空 mysql>update mysql.user set password=password("newpassword") where user='root'

多实例找回丢失的root密码步骤

1、关闭mysql #mysqladmin -uroot -prootabcd -S /data/3306/mysql.sock shutdown
2、启动时加参数 启动#mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables & 
登陆#mysql -uroot -p -S /data/3306/mysql.sock   /*登陆时空密码
3、修改密码的方法
mysql>update mysql.user set password=password("newpassword") where user='root' 
mysql>flush privileges;

MySQL帮助命令

help help 
help show 获取show命令相关 
help grant 获取grant命令相关,建立超级管理员时加with grant option; 
help create table 
help create database 
help alter table 
help create index
.......

 sq语言的分类

1、*数据查询语言DQL    select类
2、*数据库操作语言DML  select  insert update delete类
3、事物处理语言TPL     确保被DML语句影响的表的所有行及时得到更新。包括begin transaction commit和rollback
4、*数据控制语言DCL    grant\revoke、commit,rollback
5、*数据定义语言DDL    create、drop、alter
6、指针控制语言        像declare cursor、fetch into和update where current用户对一个或多个表单独行的操作

 

posted @ 2017-03-17 01:10  黑色月牙  阅读(267)  评论(0编辑  收藏  举报