mysql操作
1.1数据库启动
1.1.1单实例启动mysql:
法一:
[root@hcf etc]# /etc/init.d/mysqld restart
Shutting down MySQL... [ OK ]
Starting MySQL.. [ OK ]
[root@hcf etc]# /etc/init.d/mysqld stop
Shutting down MySQL..... [ OK ]
[root@hcf etc]# /etc/init.d/mysqld start
Starting MySQL. [ OK ]
法二:
/usr/local/mysql/bin/mysqld_safe &
[root@hcf etc]# /application/mysql/bin/mysqld_safe --user=mysql &
Starting mysqld daemon with databases from /application/mysql5.1.72/data
killall mysqld
killall -9 mysqld <==尽量不要野蛮粗鲁杀死数据库,可能会引起数据丢失,不能正常启动数据库
mysqld:no process mysqld
提示:关闭直到出现mysqld:no process killed 表示完成关闭操作.法二的启动与关闭命令一般生产情况下不适用.有关killall,kill,pkill等进程管理命令.
1.1.2多实例启动:
/bin/sh ${CmdPath}/mysqld_safe –defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null &
1.2登录mysql方法
1.2.1单实例方法
mysql –uroot –p标准的dba命令行登录命令,登录后默认提示符是:mysql>,提示符是可以改的,像linux命令行提示符一样
1.2.2多实例方法
mysql –uroot –p –S /data/3306/mysql.sock 本机加socket,远程加端口空密码再输入enter即可进入
提示:多实例通过mysql的-S命令指定不同的sock文件登录不同的服务中.
1.3登录后的信息
;或\g结束命令
1.4mysql的help
mysql中的help和linux命令行的man是类似的.要想看mysql中的命令语法,就要用help,如:help create,不区分大小写
建议:一般解决问题等先看故障日志,然后搜索(g>b)好些,对于知识的学习,用法,查看软件的帮助或官方手册更好.
1.5退出mysql
mysql> quit或exit ctrl+c
1.6设置及修改mysql root用户密码
由于安装mysql后,默认的管理员root密码为空,不安全.
安装mysql单实例后,已经做了一些安全措施:
- 为root设置密码,更安全的措施例如删除root,添加新的管理员
- 删除无用的mysql账号
- 删除test数据库
1.6.1设置密码方法
Mysqladmin –u root password ‘wj123’
Mysqladmin –u root –p’wj123’ password ‘wj’ –S /data/3306/mysql.sock <--适合多实例方式
以上的命令是在linux命令行
1.6.2修改root密码法一
Mysqladmin –u root –p’wj123’ password ‘wj’
Mysqladmin –u root –p’wj’ password ‘wj123’ –S /data/3306/mysql.sock
1.6.3修改root密码法二
mysql> update mysql.user set password=PASSWORD("wj123456") where user="root" and host="localhost";
mysql> flush privileges;
此方法适合skip-grant-tables方式修改密码
1.6.4修改root密码法三(可以不记)
Mysql安装完毕后,root默认口令为空,需要马上修改root口令.
mysql> set password=password('wj123');
Query OK, 0 rows affected (0.00 sec)
注意:密码是8位以上,数字与字母混合.
1.7如何找回丢失mysql root用户的密码
1.7.1单实例启动修改丢失的mysql root密码方法
[root@hcf etc]# mysqld_safe --skip-grant-tables & 用户是root时忽略授权表
直接命令行敲mysql就可以进去了
mysql> set password=password('wj123');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
1.7.2多实例启动修改丢失root密码方法
Mysqld_safe –defaults-file=/data/3306/my.cnf –skip-grant-table & 加上配置文件
Mysql –uroot –p –S /data/3306/mysql.sock登录时空密码
1.7.3退出mysql,重启mysql重新登录即可
查看建库语句
Show create database db_name;
建立一个名为wj_gbk的gbk字符集数据库
mysql> create database wj_gbk default character set gbk collate gbk_chinese_ci;
建立一个名为wj_utf8的utf8字符集数据库
mysql> create database wj_utf8 character set utf8 collate utf8_general_ci;
mysql> select database(); system pwd(类似linux的)
select version() select user()相当于linux的whoami
1.8删除系统多余用户
mysql> drop user ''@'localhost'; 有大写或特殊字符时,drop不管用,使用delete去表中删除
mysql> delete from mysql.user where user="" and host="localhost";
mysql> flush privileges;刷新权限
1.9用户授权
先建用户,然后再授权(用户名+主机名锁定唯一用户)
mysql> create user 'wj'@'localhost' identified by 'mypass';
如果用户已经存在报以下错误:
ERROR 1396 (HY000): Operation CREATE USER failed for 'wj'@'localhost'
mysql> help show grants;
mysql> show grants for 'test'@'localhost';
GRANT USAGE ON *.* TO 'test'@'localhost'…刚创建用户没有授权只有连接权限usage,用户默认权限
mysql> grant all on wj.* to 'wj'@'localhost';
以上两条命令相当于下面一条命令:
2)创建用户的同时授权. 直接grant法
grant all privileges on dbname.* to username@’localhost’ identified by ‘passwd’;
授权localhost主机上通过用户username管理dbname数据库的所有权限,密码为passwd,其中username,dbname,passwd可根据自己的情况修改.
mysql> grant all on wj.* to 'wj'@'localhost' identified by 'mypass';
1.9.2用户远程连接数据库:
要远程连接10.0.0.19的数据库,命令为mysql –utest -p ‘test123’ –h 10.0.0.19,要能成功连接,还需要在10.0.0.19上通过如下命令授权:
grant all on *.* to test@'10.0.0.%' identified by 'test123'; all=all privileges
flush privileges
带有授权的所有权限with grant option,不需要带有授权时去掉with grant option
grant all privileges on *.* to test@'10.0.0.%' identified by 'test123' with grant option;
grant select,insert,update,delete on *.* to test@'10.0.0.%' identified by 'test123';
grant select on ‘blog’.* to test@'10.0.0.%' identified by 'test123';
help revoke收回权限
法二:建表后增加索引2个方法
alter table test add index Index_name(name);
create index index_name on test(name);<==不能创建主键索引
更新数据库时要维护索引,我们要尽量选择在唯一值多的大表上建立索引,小表上不要建立索引.索引要创建在条件列,而不是选择的列.
egrep –v “^\-|\*|^$” /mnt/tmp.sql查看mysql备份的文件
explain 5,6,7,8,10,11,13,14,15mysql官方手册
在表中增删改字段
Alter table 表名 add 字段 类型 其他 after name;
alter table pp_statistics_coupon add statistics_sign int(2) comment '1.2017国庆餐厅推广活动(后加为空) 2.微博分流测试活动';