设为首页 收藏本站
查看: 230|回复: 0

[经验分享] mysql常用操作命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-28 08:50:24 | 显示全部楼层 |阅读模式
Mysql 忘记root密码
方法一:
在/etc/my.cfg [mysqld]下面添加
skip-grant-tables     或是skip-grant
重启MySQL
use mysql;
UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
mysql flush privileges;
将my.cfg文件修改回来 ,重启MySQL即可。
方法二:
在启动Mysql服务器时加上参数--skip-grant-tables来跳过授权表的验证
(./safe_mysqld --skip-grant-tables &),这样我们就可以直接登陆Mysql服务器,
然后再修改root用户的口令,重启Mysql就可以用新口令登陆了。

添加环境变量
export PATH=/usr/local/mysql/bin:$PATH  加入到/etc/profile.d/mysql.sh中


只需本机使用Mysql服务
在启动时还可以加上--skip-networking参数使Mysql不监听任何TCP/IP连接
(./safe_mysqld --skip-networking &),增加安全性。

查看支持的存储引擎
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)



查看当前MySQL的默认数据引擎
1
2
3
4
5
6
7
8
9
10
mysql> show variables like '%engine%';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| default_storage_engine    | InnoDB |
| engine_condition_pushdown | ON     |
| storage_engine            | InnoDB |
+---------------------------+--------+
3 rows in set (0.00 sec)
mysql> show variables;   查看相关参数




查看和修改最大连接数
使用MySQL 数据库的站点,当访问连接数过多时,就会出现 "Too many connections" 的错误。
出现这种错误有两种情况:
一种是网站访问量实在太大,服务器已经负担不起,此时就应该考虑负载均衡或者其它减少服务器压力的办法。
另一种情况就是 MySQL最大连接数设置得太小,当访问量稍大就出现连接过多的错误。
  
show variables like '%max_connections%';
要对 mysql最大连接数进行修改,只需要在my.cnf 配置文件里面修改max_connections的值,然后重启mysql就行。
如果my.cnf 文件中没有找到 max_connections 条目,可自行添加以下条目。
max_connections = 220
或是
mysql>set global max_user_connections = 200; [仅本次修改有效]


实时查看mysql当前连接数
前提:对用户和远程主机有授权
mysql> grant all on *.* to root@192.168.9.9 identified by '123456';
mysql> flush privileges;

[iyunv@test ~]# mysqladmin -uroot -p -h192.168.9.9  processlist;

只查看当前连接数(Threads就是连接数)
[iyunv@OceanV ~]# mysqladmin -uroot -p123456 status;
Uptime: 4449  Threads: 2  Questions: 18697  Slow queries: 0  Opens: 77  Flush tables: 1  Open tables: 31  Queries per second avg: 4.202

mysql> show full processlist;
或者
mysql> show status;

查看一下所有连接进程,注意查看进程等待时间以及所处状态 是否locked
如果进程过多,就把进程打印下来,然后查看.
mysql -e 'show full processlist;' -p > 111.txt
查找非locked的进程,一般就是当前执行中卡死,导致后面的进程排队的原因。


查看MySQL连接数和当前用户Mysql连接数
先用管理员身份进入mysql提示符。
mysql -uroot -pxxxx
mysql >show processlist;         #可以显示前100条连接信息
mysql >show full processlist;    #可以显示全部。如果用普通账号登录,就只显示这用户的。


修改MySQL监听端口
1.如果安装的是系统自带的rpm包的情况:
修改 /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
port=3300                    #修改成你自己想要的端口
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


2.如果安装的是源码包或者在同一服务器上安装多个mysqld服务情况:
找出my.cnf 文件。添加port= 端口号
需要注意的是
[client]
port            = 3300
这里也要改一下。


在同一台机器上配置两个MySQL服务(跑两个端口)
cd /usr/local/;

cp -r mysql mysql_2
cd mysql_2;
初始化mysql2
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql2   
拷贝配置文件:
cp /etc/my.cnf ./my.cnf
修改配置文件相关参数:vim my.cnf  #更改port 以及socket
启动:/usr/local/mysql_2/bin/mysqld_safe --defaults-file=/usr/local/mysql_2/my.cnf --user=mysql &
若开机启动它,需加入到 /etc/rc.local中

查看mysql服务器当前版本,当前日期,当前用户
mysql> select version();
mysql> select current_date();
mysql> select user();

查看mysql状态
mysql> show status;

修改mysql参数
mysql> show variables like 'max_connect%';

mysql> set global max_connect_errors = 1000;

开启服务器  
/etc/rc.d/init.d/mysqld start
或者
mysqld_safe  --user=mysql &

停止服务器
/etc/rc.d/init.d/mysqld stop
或者
/usr/bin/mysqladmin -u root -p shutdown

更改MySQL目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
1、home目录下建立data目录
mkdir /home/data
2、把MySQL服务进程停掉:
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整个目录移到/home/data
mv /var/lib/mysql /home/data/
这样就把MySQL的数据文件移动到了/home/data/mysql下
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf中。命令如下:
[iyunv@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。
操作如下:
vim /etc/my.cnf
# The MySQL server
[mysqld]
port   = 3306
#socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用#注释此行)
socket  = /home/data/mysql/mysql.sock   (加上此行)
6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/home/data/mysql。
[iyunv@test1 etc]# vi /etc/rc.d/init.d/mysql
#datadir=/var/lib/mysql    (注释此行)
datadir=/home/data/mysql     (加上此行)
7、重新启动MySQL服务
/etc/rc.d/init.d/mysql start
如果工作正常移动就成功了,否则对照前面的7步再检查一下。

赋权  
myaql >grant all on dbname.* to username@% identified by 'password';
mysql >flush privileges;刷新权限表 

优化表 
mysql> use qqtexas;
mysql> optimize table users;
mysql> optimize table users,userid;

或者进行优化并检查修复任务
[iyunv@test ~]# mysqlcheck -o dbname tblA tblB  tblC -u root -p

对表进行分析  
mysql> use qqtexas;
mysql> analyze table tblA;

[iyunv@test ~]# mysqlcheck -a dbname [tblA  tblB tblC ] -u root -p

对表进行检查 
mysql> use qqtexas;
mysql> check table users;

从命令行登录MySQL数据库服务器
  • 登录使用默认3306端口的MySQL
    /usr/local/mysql/bin/mysql -u root -p
  • 通过TCP连接管理不同端口的多个MySQL(注意:MySQL4.1以上版本才有此项功能)
    /usr/local/mysql/bin/mysql -u root -p --protocol=tcp --host=localhost --port=3307
  • 通过socket套接字管理不同端口的多个MySQL
    /usr/local/mysql/bin/mysql -u root -p --socket=/tmp/mysql3307.sock
  • 通过端口和IP管理不同端口的多个MySQL
    /usr/local/mysql/bin/mysql -u root -p -P 3306 -h 127.0.0.1



修改登录密码
MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
usr/bin/mysqladmin -u root password 'new-password'
格式:mysqladmin -u用户名 -p旧密码 password 新密码



显示数据表的结构
mysql> use qqtexas;

mysql> desc tablesname;
显示表的创建信息
show create table tablesname;
更改表结构,将zhangyan表username字段的字段类型改为CHAR(25)
ALTER TABLE zhangyan CHANGE username username CHAR(25);

创建名称为ocean的数据库
mysql> create database ocean;
mysql> drop database ocean;

mysql> drop tables tablesname;

将表中记录清空
mysql> delete from tablesname;
mysql> truncate table db1.t1;


将当前目录下的mysql.sql导入到数据库中
mysql> source ./mysql.sql;


添加主键: alter table 表名 add primary key(列名)
删除主键: alter table 表名 drop primary key;
给某列改名: alter table 表名 change 列名 属性列表

比如alter table student change id no char(4)
添加某列:
1 在表的最前面添加列 比如给student表添加id属性 放在表的最前面
alter table student add id int(4) not null auto_increment primary key first;
2 在表的某个列后加列 比如给student表添加id属性 放在列no的最前面
alter table student add a int(11) afer no;
删除某列: alter table 表名 drop column 列名;
更改某列属性 比如修改student no字段属性 alter table student modify no char(4);
添加索引:alter table 表名 add index 列名
删除索引:alter table 表名 drop index 列名
删除外键:alter table 表名 drop foreign key 约束名
limit的使用:
select * from 表名 limit 2;//如果只给定一个参数,它表示返回最大的记录行数目
select * from 表名 limit 1,3;// 第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71341-1-1.html 上篇帖子: mysql分库.分表备份 下篇帖子: The server quit without updating PID file (/application/mysql/localhost.localdom mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表