MySQL数据库安装及基本配置
CentOS6和RHEL6系统的YUM中包含了MySQL安装包,版本是MySQL5。rpm软件包的名称是mysql-server。
使用以下命令可以安装MySQL数据库:
yum install -y mysql-server mysql mysql-devel
安装完成后我们可以通过以下命令启动MySQL服务:
(service mysqld start
第一次启动MySQL服务后,我们需要对MySQL数据库进行初始化操作,设置root用户的密码,使用以下命令设置MySQL的root用户密码:
mysqladmin -u root password 'password')
我们可以通过以下命令连接到本机的MySQL服务上:
mysql -u root -p
开机自动启动mysql
CentOS6和RHEL6系统的YUM中包含了MySQL安装包,版本是MySQL5。rpm软件包的名称是mysql-server。
使用以下命令可以安装MySQL数据库:
yum install -y mysql-server mysql mysql-devel
安装完成后我们可以通过以下命令启动MySQL服务:
(service mysqld start
第一次启动MySQL服务后,我们需要对MySQL数据库进行初始化操作,设置root用户的密码,使用以下命令设置MySQL的root用户密码:
mysqladmin -u root password 'password')
我们可以通过以下命令连接到本机的MySQL服务上:
mysql -u root -p
开机自动启动mysql
chkconfig mysqld on
配置文件保存在/etc/my.cnf
配置文件保存在/etc/my.cnf
SQL语言基础
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
语法:
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
语法:
新建表:
CREATE TABLE `people`
( `peopleid` smallint(6) NOT NULL AUTO_INCREMENT,
`firstname` char(50) NOT NULL,
`lastname` char(50) NOT NULL,
`age` smallint(6) NOT NULL,
`townid` smallint(6) NOT NULL,
PRIMARY KEY (`peopleid`),
UNIQUE KEY `unique_fname_lname`(`firstname`,`lastname`),
KEY `fname_lname_age` (`firstname`,`lastname`,`age`)
) ;
重命名表名:ALTER TABLE table_name RENAME table_name_new;
如需在表中添加列,请使用下列语法:
ALTER TABLE table_name ADD column_name datatype;
要删除表中的列,请使用下列语法:
ALTER TABLE table_name DROP COLUMN column_name;
注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
要改变表中列的数据类型,请使用下列语法:
ALTER TABLE table_name MODIFY column_name datatype;
重命名一个列:
ALTER TABLE table_name CHANGE COLUMN column_name column_name_new datatype;
INSERT INTO 语句用于向表格中插入新的行。
插入:
INSERT INTO table_name VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
Update 语句用于修改表中的数据:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
DELETE 语句用于删除表中的行:
DELETE FROM 表名称 WHERE 列名称 = 值
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name 或者 DELETE * FROM table_name
创建一个用户:
CREATE USER monitor IDENTIFIED BY 'password';
删除一个用户:
DROP USER monitor;
要点:
DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。这是有意设计的。
重命名用户:
RENAME USER monitor TO monitor2;
重置密码:
SET PASSWORD = PASSWORD('newpassword');
SET PASSWORD FOR monitor = PASSWORD('newpassword');
授予的权限可以分为多个层级:
全局层级 数据库层级 表层级 列层级 子程序层级
全局级授权:
GRANT ALL PRIVILEGES ON *.* to 'monitor'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* to 'monitor'@'%' IDENTIFIED BY 'password';
撤销所有授权:
REVOKE ALL PRIVILEGES , GRANT OPTION FROM monitor;
MySQL使用最为广泛的备份工具是mysqldump。
使用mysqldump进行基本的数据库备份恢复。
备份一个数据库:
mysqldump -u root -p linuxcast > linuxcast_backup.sql
从一个备份文件恢复一个数据库:
mysql -u root -p linuxcast < linuxcast_backup.sql
从一个MySQL服务器备份数据库到另一个MySQL服务器(注意应该先在远程MySQL上创建好数据库):
[local-server]# mysqldump -u root -p linuxcast | mysql \
-u root -p --host=remote-server -C linuxcast
查看MySQL支持的编码:
mysql> SHOW CHARACTER SET;
查看当前MySQL服务器默认编码:
mysql> SHOW VARIABLES LIKE 'character_set%';
mysql> SHOW VARIABLES LIKE 'collation%';
创建数据库的时候指定编码:
CREATE DATABASE linuxcast
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
修改一个已有数据库的编码:
ALTER DATABASE linuxcast CHARACTER SET utf8 COLLATE utf8_general_ci;
(设置数据库默认编码:
修改MySQL配置文件my.cnf:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
修改之后重启MySQL生效。)
撤销所有授权:
REVOKE ALL PRIVILEGES , GRANT OPTION FROM monitor;
MySQL使用最为广泛的备份工具是mysqldump。
使用mysqldump进行基本的数据库备份恢复。
备份一个数据库:
mysqldump -u root -p linuxcast > linuxcast_backup.sql
从一个备份文件恢复一个数据库:
mysql -u root -p linuxcast < linuxcast_backup.sql
从一个MySQL服务器备份数据库到另一个MySQL服务器(注意应该先在远程MySQL上创建好数据库):
[local-server]# mysqldump -u root -p linuxcast | mysql \
-u root -p --host=remote-server -C linuxcast
查看MySQL支持的编码:
mysql> SHOW CHARACTER SET;
查看当前MySQL服务器默认编码:
mysql> SHOW VARIABLES LIKE 'character_set%';
mysql> SHOW VARIABLES LIKE 'collation%';
创建数据库的时候指定编码:
CREATE DATABASE linuxcast
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
修改一个已有数据库的编码:
ALTER DATABASE linuxcast CHARACTER SET utf8 COLLATE utf8_general_ci;
(设置数据库默认编码:
修改MySQL配置文件my.cnf:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
修改之后重启MySQL生效。)
解决进不去mysql问题:
/etc/init.d/mysql stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
/etc/init.d/mysql stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql>FLUSH PRIVILEGES;
mysql>quit
mysql>FLUSH PRIVILEGES;
mysql>quit
/etc/init.d/mysql restart
mysql -u root -p
Enter password: <输入新设的密码newpassword>
mysql>
解决修改密码问题:
SET PASSWORD = PASSWORD('password');
mysql -u root -p
Enter password: <输入新设的密码newpassword>
mysql>
解决修改密码问题:
SET PASSWORD = PASSWORD('password');
解决新建用户无法登陆问题:
因为root权限过高,所以新建一用户monitor。创建语句如下:GRANT ALL PRIVILEGES ON *.* to 'monitor'@'%' IDENTIFIED BY 'password';其中@“%”是可以在任何地址登录。
创建后到mysql.user下查看,有该用户。但是使用mysql -u monitor -p password 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'monitor'@'localhost' (using password: YES)
解决方法:
GRANT ALL PRIVILEGES ON *.* to 'monitor'@'localhost' IDENTIFIED BY 'password';
退出后用monitor登录,成功。
创建后到mysql.user下查看,有该用户。但是使用mysql -u monitor -p password 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'monitor'@'localhost' (using password: YES)
解决方法:
GRANT ALL PRIVILEGES ON *.* to 'monitor'@'localhost' IDENTIFIED BY 'password';
退出后用monitor登录,成功。