先安装mysql
yum install mysql mysql-server service mysql start
(apt-get install mysql-client mysql-server)
登录MySQL数据库服务器
1、登录使用默认3306端口的MySQL
mysql -u root -p
2、通过TCP连接管理不同端口的多个MySQL(注意:MySQL4.1以上版本才有此项功能)
mysql -u root -p --protocol=tcp --host=localhost --port=3307
3、通过socket套接字管理不同端口的多个MySQL
mysql -u root -p --socket=/tmp/mysql3307.sock
4、通过端口和IP管理不同端口的多个MySQL
mysql -u root -p -P 3306 -h 127.0.0.1
数据库操作SQL语句
小写也可以
1、显示服务器上当前存在什么数据库
SHOW DATABASES;
2、创建名称为rewin的数据库
CREATE DATABASE rewin;
3、删除名称为rewin的数据库
DROP DATABASE rewin;
4、选择rewin数据库
USE rewin;
表操作SQL语句(登录之后必须用以上的USE命令选择一个数据库,再进行表操作)
1、显示当前数据库中存在什么表
SHOW TABLES;
2、创建数据库表zhangyan:在mysql>后粘贴以下SQL语句,存储引擎为MYISAM,字段id为主键、唯一索引。
CREATE TABLE `zhangyan` ( `id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT , `username` VARCHAR( 20 ) NOT NULL , `password` CHAR( 32 ) NOT NULL , `time` DATETIME NOT NULL , `number` FLOAT( 10 ) NOT NULL , `content` TEXT NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;3、查看zhangyan表结构
DESCRIBE zhangyan;
4、从表中检索信息
4.1、从zhangyan表中检索所有记录
SELECT * FROM zhangyan;
4.2、从zhangyan表中检索特定的行:字段username等于abc,字段number等于1,按字段id降序排列
SELECT * FROM zhangyan WHERE username = 'abc' AND number='1' ORDER BY id DESC;4.3、从zhangyan表中检索指定的字段:username和password
SELECT username, password FROM zhangyan;
4.4、从zhangyan表中检索出唯一的不重复记录:
SELECT DISTINCT username FROM zhangyan;
5、插入信息到zhangyan表
INSERT INTO zhangyan (id, username, password, time, number, content) VALUES ('', 'abc', '123456', '2007-08-06 14:32:12', '23.41', 'hello world');6、更新zhangyan表中的指定信息
UPDATE zhangyan SET content = 'hello china' WHERE username = 'abc';
7、删除zhangyan表中的指定信息
DELETE FROM zhangyan WHERE id = 1;
8、清空zhangyan表
DELETE FROM zhangyan;
9、删除zhangyan表
DROP TABLE zhangyan;
10、更改表结构,将zhangyan表username字段的字段类型改为CHAR(25)
ALTER TABLE zhangyan CHANGE username username CHAR(25);
11、将当前目录下的mysql.sql导入数据库
SOURCE ./mysql.sql;
数据库权限操作SQL语句
1、创建一个具有root权限,可从任何IP登录的用户sina,密码为zhangyan
GRANT ALL PRIVILEGES ON *.* TO 'sina'@'%' IDENTIFIED BY 'zhangyan' WITH GRANT OPTION; FLUSH PRIVILEGES;2、创建一个具有“数据操作”、“结构操作”权限,只能从192.168.1.***登录的用户sina,密码为zhangyan
GRANT SELECT , INSERT , UPDATE , DELETE , FILE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON *.* TO 'sina'@'192.168.1.%' IDENTIFIED BY 'zhangyan';3、创建一个只拥有“数据操作”权限,只能从192.168.1.24登录,只能操作rewin数据库的zhangyan表的用户sina,密码为zhangyan
GRANT SELECT , INSERT , UPDATE , DELETE ON rewin.zhangyan TO 'sina'@'192.168.1.24' IDENTIFIED BY 'zhangyan';4、创建一个拥有“数据操作”、“结构操作”权限,可从任何IP登录,只能操作rewin数据库的用户sina,密码为zhangyan
GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON rewin.* TO 'sina'@'%' IDENTIFIED BY 'zhangyan';5、删除用户
DROP USER 'sina'@'%';
PS:如果想了解更多的MySQL操作资料,请参考MySQL官方的中文参考手册
mysqldump备份数据库
mysqldump -u root -p bugs | gzip > bugzilla_20121206.sql.gz
但是这个发现在小内存机子上把内存占满了。
需要添加–opt参数
mysqldump –opt
这样就会使用一些默认选项,可以正常导出了。
导入数据库
创建新的数据库用于导入备份的数据库,命令如下:
mysql –u root –p
输入密码后进入mysql操作界面
输入:
create database bugzilla_new
使用如下命令导入备份的Bugzilla 4.0.1的mysql数据库,从新命名数据库名
gunzip < bugzilla_20121206.sql.gz | mysql –u root –p bugzilla_new
mysql配置文件
一般/etc/my.ini
而一般参考配置在:
usr/share/mysql
config.huge.ini config.medium.ini config.small.ini
不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要。
mysql_install_db
创造MySQL授权表,否则数据库也是启动不了。
mysql_install_db,这个命令的用途就是做这个的。
mysql_install_db,这个命令的用途就是做这个的。
设置密码
mysqladmin -u root password 123456
MySQL 远程连接配置
方法一:改表法
默认mysql帐号不允许从远程登陆,只允许localhost访问。登入mysql后,更改 “mysql” 数据库 里的 “user”(远程数据库的名称) 表里的 “host” 项,把”localhost”改称”%” 。这样你的mysql就可以远程操作了。
update user set host = ‘%’ where user = ‘root’;
注意:这样方法只是把本机localhost访问改为了”%”所有地址IP都可以访问mysql服务器,这样很不安全。默认localhost访问的时候有所有操作权限。所以不安全!推荐用第二个方法。
update user set host = ‘%’ where user = ‘root’;
注意:这样方法只是把本机localhost访问改为了”%”所有地址IP都可以访问mysql服务器,这样很不安全。默认localhost访问的时候有所有操作权限。所以不安全!推荐用第二个方法。
方法二:授权法 (推荐使用)
(1)
grant select,insert,update,delete on *.* to root@"%" Identified by "password";允许地址IP上root用户,密码dboomysql来连接mysql的所有数据库,只付给select,insert,update,delete权限。 这样比较安全。
(2)
grant select,insert,update,delete on *.* to root@"192.168.1.1" Identified by "password";只允许地址IP(192.168.1.1)上root用户访问更安全了。
(3)
grant all on *.* to root@"192.168.1.1" Identified by "password"允许地址192.168.1.1上用root用户,密码password来连接mysql的所有数据库,付给所有权限。不太安全。
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'your paaaword';
实际测试
使用第一种方法没成功,没有找到user数据库,而且也没有host项。
使用
使用
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'your paaaword';成功。