这是以前的时候写在别的博客上的,现在主要弄CU了,所以,就把以前的东西也搬过来了。2011-12-21
大学的时候学过sql语句,也装过了sql server 2000,可是不怎么会用,那个时候就JB知道玩。。。打dota,打毛dota,荒废了哥几年的青春,老婆也没找到。。。上周打了两天dota,身体非常疲惫,周一、周二上班都很不在状态,唉,悲剧男!
听说N多公司都玩的都是mysql,出乎我意料的,去久游扫地的那小伙子(高中同学,c++大神)他们也是都用mysql,故而坚定了我学一下mysql的决心。很久之前我也安装过,但是创建用户、数据库、表、数据,备份、还原、优化,结合到shell脚本的一些应用,都不会。。。今天,就在vm里面搞一下(32位redha t5.4),解压tar.gz,顺利安装成功(./configure --sysconfdir=/etc --with-named-curses-libs=/usr/lib/libncursesw.so.5),我是编译的,相对来说,对一般人来讲最后用rpm包(一个server rpm和一个clint rpm,先server)来安装,这种方法比较容易上手、排错,如果编译的话出现各种难以预料的情况,一般人不容易解决。做事我一向混乱,为了让看本文的同学们清楚的看到操作步骤,还是弄成1、2、3条来描述吧!
1.安装成功之后会有提示的,具体什么我不记得了,还有,编译的过程中,如果报错,就得检查检查,不能盲目安装,因为就算你安装了也不能用。安装完毕之后(make &make install),初始化数据库!
# useradd -d /usr/local/var mysql
# su - mysql
$ /usr/local/bin/mysql_install_db
然后启动mysql,$ /usr/local/share/mysql/mysql.server start
$ netstat -tnl | grep 3306
如果端口启动了,则 ok。
2.mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
执行:[mysql@localhost local]$ mysql -u root
成功的话, 出现
mysql>
mysql>\s
mysql>\q //退出
3.cp /usr/local/share/mysql/mysql.server /etc/init.d/mysqld
这样可以用service mysqld start来启动,也可以设置开机启动(一般来说我感觉没必要,可能哥的服务器比较少吧。。。)
本来不想写这个了,后来找到了,就写上吧,
查看开机启动列表:
[root@test1 local]# /sbin/chkconfig – list
如果没有mysql,就:
[root@test1 local]# /sbin/chkconfig – add mysql
4.修改密码 设置密码等操作
MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例1:给root加个密码123456。
键入以下命令 :
[root@test1 local]# /usr/bin/mysqladmin -u root password 123456
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
如果有,则:[root@test1 local]# /usr/bin/mysqladmin -u root -p 旧密码 password 123456
然后登录测试:#mysql -u root -p
输入密码,ok。
6.更改MySQL目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
1)、home目录下建立data目录
cd /home
mkdir 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)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
7.莫名其妙的在我修改了密码之后登录不上,很奇怪,问了别人,也没给我说清楚,最后马勒隔壁,还得靠自己Google搜索,看了51cto上的一个帖子,的解决方法,还真管用,转过来了,内容如下:
『一、mysql登录错误
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
无法修改密码
用 service mysqld stop
mysqld_safe --skip-grant-tables &
输入 mysql -uroot -p 回车进入
>use mysql;
> update user set password=PASSWORD("newpass")where user="root";
更改密码为 newpassord
> flush privileges; 更新权限
> quit 退出
service mysqld restart
mysql -uroot -p新密码进入
===========================================================
二,忘记本地root的登录密码
解决过程:
1、编辑/etc/my.cnf
在[mysqld] 配置部分添加一行
skip-grant-tables
2、保存后重启mysql
[root@localhost etc]# service mysqld restart
Shutting down MySQL. [ OK ]
Starting MySQL. [ OK ]
3、登录数据库重新设置root密码
[root@localhost ~]# mysql -uroot -p mysql
Enter password:
直接回车进入
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.47-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
执行下列语句
mysql> update user set password=password("mysql") where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4、删除/etc/my.cnf文件中添加的“skip-grant-tables”行,重启mysql;
用新设的密码就能正常登录了;
』
8.备份与还原(我还没来得及验证。。。不过命令肯定是没问题的)
1)、备份
例如:将创建的数据库aaa库备份到文件back_aaa中
[root@test1 root]# cd /val/lib/mysql
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
2、恢复
[root@test mysql]# mysql -u root -p ccc < back_aaa
将这连个两个操作,应用的脚本中,脚本再写入crontab中,就可以定时对数据库进行备份。
9.添加各种用户(徒弟给提供的文档)
『
添加新用户。
(留心:和上面不同,下面的因为是 MySQL 环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、添加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
grant select, insert, update, delete on *.* to " Identified by "abc";
但例1添加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台计算机上登录你的mysql数据库并对你的数据可以为所欲为了,处理办法见例2。
例2、添加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库 mydb执行 查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即运用知道test2的密码,他也不能从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select, insert, update,delete on mydb.* to identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select, insert, update, delete on mydb.* to identified by "";
在上篇我们讲了登录、添加用户、密码修改等疑问。下篇我们来看看MYSQL中有关数据库方面的操作。留心:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下执行 的,而且每个命令以分号结束。
』
今天就到这里了,以后再有再补充。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
oracle笔记。。。(2011-8-27)
首选启动数据库
su – oracle
sqlplus /nolog
conn /as sysdba
startup
然后启动监听:
进入/opt/oracle/product/9.2.0/bin/
lsnrctl start
运行shudown命令关闭数据库
[oracle@wing /oracle]$ sqlplus ” / as sysdba” //以sysdba用户登陆数据库
SQL> shutdown