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 (推荐) 3、kill -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用户对一个或多个表单独行的操作