(1)Mysql配置文件
[root@yiqiang ~]# vim /etc/my.cnf
常用的配置 [mysqld]
[root@yiqiang ~]# mysql -uroot
mysql> show variables;
-> ;
会显示个格子,此令如同下,等同下面 令,
mysql> SHOW STATUS LIKE 'key_read%' ;
key_buffer_size 首先可以根据系统的内存大小设定它,大概的一个参考值:1G以下内存设定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M.这个值可以通过检查状态值Key_read_requests和 Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。注意:该参数值设置的过大反而会是服务器整体效率降低!
mysql>quit
[root@yiqiang ~]# vim /etc/my.cnf
配置 [mysqld]
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
interactive_timeout = 8
wait_timeout = 8
long_query_time = 1
log_slow_queries = /data/mysql/slow.log
按:wq保存退出
(2)3.1 mysql的root密码重置
设置mysql密码
[root@yiqiang ~]# mysqladmin -uroot password 'haoyiyide.com'
就需要密码登陆
[root@yiqiang ~]# mysql -uroot -phaoyiyide.com
完成mysql密码设置!
--------------------------------------------------------------------------------------------------------------
重置mysql密码
[root@yiqiang ~]# vim /etc/my.cnf
在[mysqld]加入一条;不去授权密码登陆
skip-grant
按:wq保存退出,如有误,则检查如下写法,是否有错误 5.1版本以后则skip-grant-tables因为新版本不一样
thread_concurrency = 8
interactive_timeout = 8
wait_timeout = 8
long_query_time = 1
log_slow_queries = /data/mysql/slow.log
skip-grant
[root@yiqiang ~]# vim /etc/my.cnf 编辑配置文件
[root@yiqiang ~]# /etc/init.d/mysqld restart 重启动Mysql
如有误,则检查如下写法,是否有错误 5.1版本以后则skip-grant-tables因为新版本不一样
完成密码不去受权登陆!
----------------------------------------------------------------------------------------------------------
[root@yiqiang ~]# mysql 进入mysql
mysql> use mysql; #使用其中一个库
No connection. Trying to reconnect...
Connection id: 13
Current database: *** NONE ***
Database changed
mysql>
mysql> update user set password=password('dubingyu.com') where user ='root'; 设置的密码
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 4
Current database: mysql
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from user where user='root'\G; 查看表的更改
Host: localhost
User: root
Password: *DCCD3DAF8D60DD3EC02F8E8BA7689632F41B90FC
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
.
.
.
.
[root@yiqiang ~]# vim /etc/my.cnf 编辑配置文件
删掉 skip-grant 这个行
[root@yiqiang ~]# /etc/init.d/mysqld restart 重启动
完成密码重置!
-------------------------------------------------------------------------------------------------------------
[root@yiqiang ~]# mysql -uroot -pdubingyu.com 在登陆需要用密码登陆
再次重置mysql密码成功。
-------------------------------------------------------------------------------------------------------------------
(3)3.2 mysql账户登陆
[root@yiqiang ~]# mysql -uroot -pdubingyu.com 本地用来登陆方法。
[root@yiqiang ~]# mysql -uroot -h127.0.0.1 -P3306 -pdubingyu.com 远程登陆格式
[root@yiqiang ~]# mysql -uroot -h192.168.1.128 -P3306 -pdubingyu.com
ERROR 1130 (HY000): Host '192.168.1.128' is not allowed to connect to this MySQL server #表示未授权
[root@yiqiang ~]# telnet 127.0.0.1 3306 测试端口是否开通 ,查看是否授权
--------------------------------------------------------------------------------------------------------------
mysql>
mysql> grant all on *.* to 'root'@'192.168.1.106' identified by '123aaa'; 需要授权,到mysql上去
mysql> use mysql
mysql> select * from user where host='192.168.1.106'\G; #查看是否生效。
*************************** 1. row ***************************
Host: 192.168.1.128
User: root
Password: *DCCD3DAF8D60DD3EC02F8E8BA7689632F41B90FC
Select_priv: Y
Insert_priv: Y
---------------------------------------------------------------------------------------------------
[root@yiqiang ~]# mysql -uroot -h192.168.1.106 -P3306 -p123aaa 远程登陆,Ok了
mysql> select user(); 查看当前登陆有谁
+--------------------+
| user() |
+--------------------+
| root@192.168.1.128 | ¥#这里显示当前登陆的用户
+--------------------+
1 row in set (0.00 sec)
mysql>
-----------------------------------------------------------------------------------------------------------
当有多个mysql的时候,可以用scok登陆。
[root@yiqiang ~]# mysql -uroot -S /tmp/mysql.scok -p 本地登陆,另外一种形式,必须有多个mysql
Enter password:
-------------------------------------------------------------------------------------------------------
(4)3.3 mysql常用操作-1
[root@yiqiang ~]# mysql -uroot -pdubingyu.com
mysql> show databases; 查看库
mysql> use mysql 切换库
mysql> use discuz
mysql> select database(); 查看在哪个库下,当前库下
mysql> select user(); 查看当前登陆有谁,用户
mysql> select version(); 查看mysql版本号
mysql>quit
mysql>use discuz
mysql>show tables; 查看有哪些表
mysql>mysql> desc pre_ucenter_vars; 查看表有哪些行,哪些包含字段
mysql> show create table pre_ucenter_vars\G; 查看表怎么创建的
mysql> show create table pre_forum_filter_post\G;
mysql>desc 查看表一个表例如:
mysql> desc pre_forum_post;
mysql> 库 --->表 ---->行---->字段
--------------------------------------------------------------------------------------------------------------------------------------------
mysql>create database aming; 创建aming库 databases:数据库
mysql>use aming; 进入到aming库里面。 然后再 创建table:表 创建tb1表
mysql> create table tb1 (`id` int(4), `name` char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk; 创建一个表,重点!!!
创建表名 tb1 (`id` 长度(4位), `名字` 格式(长度40)) 指定ENGINE= 字符集=gbk;
mymysql>desc tb1; 查看
sql>show create table tb1\G; 查看 表tb1表
mysql> insert into tb1 values(1, 'aming'); 表里插入数据
mysql> select * from tb1; 查看表
mysql> insert into tb1 values(2, 'linux'); 继续插入
mysql> select * from tb1; 查看表
mysql> insert into tb1 (`id`) values(2); 继续建立第三个,插入小字段
mysql> select * from tb1; 查看表
mysql> insert into tb1 (`id`) values(4); 继续建立第四个,插入小字段
mysql> insert into tb1 (`name`) values('55');
mysql> insert into tb1 (`name`,`id`) values('55',6); 反过来定义表
mysql> update tb1 set id=5 where name = '55'; 建立好表后,更新数据
mysql> delete from tb1 where name='55'; 删除 行 带55的 删除指定的行
mysql> truncate table aming.tb1 清空 库 #truncate table 库名&表名
select * from tb1; 查看tb1表
mysql> drop table tb1; 删除表
mysql>drop database aming; 删除库
mysql> show databases; 查看库,发现没有 aming库了
mysql>
(5)mysql 备份与恢复
[root@yiqiang ~]# mysqldump -uroot -pdubingyu.com discuz 不用备份,可以先查看。
[root@yiqiang ~]# mysqldump -uroot -pdubingyu.com discuz > /data/discuz.sql 备份到/data/discuz.sql
--------------------------------------------------------------
可以查看备份的内容,编辑它。 有发的帖子内容。
#vim /data/discuz.sql
一般模式下: /post
/pre_forum_post 这个是发帖子的内容
LOCK TABLES `pre_forum_post` WRITE;
----------------------------------------------------------------------------------------------------
[root@yiqiang ~]# cd /data
[root@yiqiang data]# ls
[root@yiqiang data]# cd /data/mysql/discuz mysql表存放地方
[root@yiqiang data]#ls 表和库存放地方,每个表有三个名字文件,mysql表结构
[root@yiqiang discuz]# rm -fr pre_forum_post* 不小心把post表删除了
[root@yiqiang discuz]# /etc/init.d/mysqld restart 重启动
页面就显示不到了,帖子块就显示不正常了
[root@yiqiang discuz]# tail /data/mysql/yiqiang.err 错误日志 ,查看 地址 不显示原因
[root@yiqiang discuz]# mysql -uroot -pdubingyu.com discuz < /data/discuz.sql 恢复mysql的
[root@yiqiang discuz]# /etc/init.d/mysqld restart 重启动
页面就显示好了,帖子块就显示正常了
备份
与恢复
# mysqldump -uroot -pdubingyu.com discuz > /data/discuz.sql
# mysql -uroot -pdubingyu.com discuz < /data/discuz.sql
就这俩个命令ok了。
-----------------------------------------------------------------------------------------------------------------
[root@yiqiang discuz]# mysqldump -uroot -pdubingyu.com discuz pre_forum_post > /data/post.sql
单独备份一个post表
[root@yiqiang discuz]# rm -fr pre_forum_post* 不小心把post表删除了
[root@yiqiang discuz]# /etc/init.d/mysqld restart 重启动
[root@yiqiang discuz]# mysql -uroot -pdubingyu.com discuz < /data/post.sql 恢复mysql的时候,不需要加表名
[root@yiqiang discuz]# /etc/init.d/mysqld restart
-------------------------------------------------------------------------------------------------------------------------
字符集,gbk 中文 utf8中日英 latin
没指定字符集恢复时会出现乱码情况。
[root@yiqiang discuz]# mysqldump -uroot --default-character-set=gbk -pdubingyu.com discuz pre_forum_post > /data/post.sql 备份
[root@yiqiang discuz]# mysql -uroot --default-character-set=gbk -pdubingyu.com discuz < /data/post.sql 恢复