一、mysql安装
yum install -y mysql mysql-server mysql-devel
二、mysql初始化
rpm包安装的mysql第一次启动就会自动初始化 #在/var/lib/mysql下建立一些相关文件,建立mysql初始数据库,提示设置mysql默认管理员用户root设置密码,默认没有密码
三、启动mysql
service mysqld start
设置mysql默认管理员用户root设置密码 默认没有密码
mysqladmin -u root password '1234567' #第一次root没有密码
四、修改mysql用户密码
a.mysqladmin命令(要退出mysql 回到linux中)
格式如下(其中,USER为用户名,PASSWORD为新密码):
mysqladmin -u USER -p password PASSWORD
该命令之后会提示输入原密码,输入正确后即可修改。
例如,设置root用户的密码为123456,则
mysqladmin -u root -p password 123456
b.UPDATE user 语句(回目录)
这种方式必须是先用root帐户登入mysql,然后执行:
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
c.SET PASSWORD 语句(回目录)
这种方式也需要先用root命令登入mysql,然后执行:
SET PASSWORD FOR root=PASSWORD('123456');
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-grant-tables
保存并且退出vi。
3.重新启动mysqld
# /etc/init.d/mysqld restart Stopping MySQL: [ OK ] Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码
# /usr/bin/mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.56 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> USE mysql ; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ; Query OK, 0 rows affected (0.00 sec) Rows matched: 2 Changed: 0 Warnings: 0 mysql> flush privileges ; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye
5.将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
# /etc/init.d/mysqld restart Stopping MySQL: [ OK ] Starting MySQL: [ OK ]
六、登录mysql服务器
如果root没有设密码就可以直接用mysql就登录了本地的Mysql服务器
mysql -u root -p
或者mysql -u root -p1234567
或者mysql -u root -p 1234567
或者mysql -uroot -p1234567
mysql -h 192.168.100.10 -u root -p # -h 指定登录的远程mysql服务器不指定就是默认登录本机的mysql服务器(前提要该mysql服务器设置了允许用户远程登录)
mysql -P 3308 192.168.100.10 -u root -p # -P(大写)指定mysql服务器的端口,默认的3306就可以不写,改了端口后在本机上登录还是可以不用写
mysql -P 3308 192.168.100.10 -D xxj -u root -p # -D 指定登录mysql服务器后指定所连的数据库是xxj
1、登录mysql登录数据库后,如何查看当前正在使用的数据库?
a. 通过函数database()实现
mysql> SELECT database();
b. 通过show tables实现
mysql> show tables;
注:注意查看列头形式, 格式为:Tables_in_[db_name]
c. 通过status实现
mysql> status;
注:注意结果中的"Current database"信息
查看数据库的版本 SELECT VERSION();
2、允许mysql远程访问,可以使用以下三种方式:
a、改表。
mysql -u root �Cp mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user;
b、授权。
例如,你想root使用123456从任何主机连接到mysql服务器。
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
如果你想允许用户jack从ip为10.10.50.127的主机连接到mysql服务器,并使用654321作为密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'jack'@’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION; mysql>FLUSH RIVILEGES
c:在安装mysql的机器上运行: #这里不知道是不是一定要到Mysql服务器本机上去操作,好像SSH远程登录 上去改没有用
//进入MySQL服务器 d:\mysql\bin\>mysql -h localhost -u root //赋予任何主机访问数据的权限 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //使修改生效 mysql>FLUSH PRIVILEGES //退出MySQL服务器 mysql>EXIT
3、mysql -h 127.0.0.1与localhost区别
1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接,
mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain"
2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket;
此时,mysql server则认为该client是来自"localhost"
3. mysql权限管理中的"localhost"有特定含义:
―― MySQL手册 5.6.4 ..... A Host value may be a hostname or an IP number, or 'localhost' to indicate the local host.
七、 mysql相关文件
/etc/my.cnf #mysql配置文件
/var/lib/mysql/ #mysql默认数据存放目录
/var/log/mysqld.log #mysql默认日志文件
默认使用3306端口
[root@bogon ~]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql #定义mysql数据存放目录, socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
[root@bogon ~]# ls /var/lib/mysql/ #没初始化前这个目录是空的,初始化后生成这6个文 件 ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock test mysql> show databases; +--------------------+ | Database | #默认有这3个数据库 +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> CREATE DATABASE xxj; Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASE; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the ri
ght syntax to use near 'DATAB ASE' at line 1 mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | xxj | +--------------------+ 4 rows in set (0.00 sec) mysql> Ctrl-C -- exit! Aborted [root@bogon ~]# ls /var/lib/mysql/ ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock test xxj #可以看到创建的数据库都存放在这个目录下 [root@bogon ~]# ls /var/lib/mysql/xxj/ db.opt